|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
问题:
输入一个r,计算区间[1,r]内有多少个不含数字6的数。
#include<stdio.h>
#include<stdlib.h>
int main()
{
long long m,j,r=10000000;
int i,count=0;
//scanf("%I64d",&r);
for(m=1;m<=r;m++)
{
j=m;
while(j!=0)
{
i=j%10;
if(i!=6)
{
if(i==j) count++;
}
else break;
j/=10;
}
}
printf("%d",count);
return 0;
}
少考虑了中间是6的情况:
- int count6lessnum(int n) {
- int a[10] = { 0,1,2,3,4,5,5,6,7,8 };
- int ret = 0, base = 1;
- while (n) {
- ret += a[n % 10] * base;
- if (n % 10 == 6) {
- ret = a[7] * base-1;
- }
- n /= 10;
- base *= 9;
- }
- return ret;
- }
复制代码
这下没问题了把
|
|