爱奇艺,奇异数,学渣想知道自己错在了哪里,谢谢!

#include<stdio.h>
int start(int l);
int start(int l)
{
 if(l>=10)
  return l;
 else return 10;
}
int main()
{
 int L,R,a,b,i,count=0;
 scanf("%d%d",&L,&R);
 for(i=start(L);i<=R;i++){
  a=i%10;
  b=(i-a)%100/10;
  if(a==b)
   count++;
 }
 printf("%d\n",count);
 return 0;
}

#爱奇艺#
全部评论
代码没问题,的确是超时的原因
点赞 回复 分享
发布于 2017-09-11 00:33
用0-r包含的个数减去0-l包含的个数,每个100包含10个,先算n有多少个100,再算n的十位和个位,再加起来,如果l是奇艺数再加1。
点赞 回复 分享
发布于 2017-09-11 07:52
超时了吧?
点赞 回复 分享
发布于 2017-09-10 22:39
我加了long之后到了60%
点赞 回复 分享
发布于 2017-09-10 22:58
首先...int存不了1e12,其次...您这代码O(n)的稳超时...
点赞 回复 分享
发布于 2017-09-11 08:21
int存不下,改成long 后超时。 实际上奇异数是每100有10个,比如说1~100,11,22,33,44,55,66,77,88,99,100. 所以可以对l和r分别除100,结果乘以10,余数再用你的方法做。 最后做个差
点赞 回复 分享
发布于 2017-09-11 08:52
#include <iostream> using namespace std; typedef long long LL; //int 支持不了10^12 LL work(LL a,LL b)  //返回的值也得是LL型的 {      return (b/100*10+b%100/11)-(a/100*10+(a-1)%100/11); } int main() {      LL a,b;      cin>>a>>b;      cout<<work(a,b)<<endl;   return 0; }
点赞 回复 分享
发布于 2017-12-07 21:15

相关推荐

牛客717484937号:双飞硕没实习挺要命的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务