题目描述:
给定两个整数a和b,计算1在a和b之间出现的次数
输入:
输入不会超过500行,每一行有两个整数a和b,a和b的范围是0-100000000.输入两个0时程序结束。
输出:
对于每一对输入a和b,输出一个数表示1出现的次数
思路:
诸位处理
#include <iostream>
using namespace std;
int N[10], number = 1;
int value;
void deal(int n)
{
if(n <= 0)
return;
int one, ten;
one = n % 10;
ten = n / 10;
n /= 10;
for(int i = 0 ; i < one ; i++)//个位
N[i] += value;
while(ten){ //因为个位非个位
N[ten%10] += one+1;
ten /= 10;
}
for(int i = 0 ; i < 10 ; i++) //个位
N[i] += value * n;
N[0] -= value; //排除第一位是0的情况(eg:没有两位数00)
value *= 10;
deal(n-1);
}
int main()
{
int a, b, n, answer[500];
n = 0;
while(true)
{
cin>>a>>b;
if(!a && !b)
break;
for(int i = 0 ; i < 10 ; i++)
N[i] = 0;
value = 1;
deal(b);
value = -1;
deal(a);
answer[n++] = N[number];
}
for(int i = 0 ; i < n ; i++)
cout<<answer[i]<<endl;
system("pause");
return 0;
}