B:小小度刷礼品
- 时间限制:
- 1000ms 内存限制:
- 65536kB
- 描述
-
一年一度的百度之星又开始了,这次参赛人数创下了吉尼斯世界纪录,于是百度之星决定奖励一部分人:所有资格赛提交ID以x结尾的参赛选手将得到精美礼品一份。
小小度同学非常想得到这份礼品,于是他就连续狂交了很多次,提交ID从a连续到b,他想问问你他能得到多少份礼品,你能帮帮他吗?
输入 - 第一行一个正整数T表示数据组数; 接下来T行,每行三个不含多余前置零的整数x,a,b (0 <=x <= 10^18, 1 <= a,b <= 10^18,a <= b) 输出
- T行,每行为对应的数据情况下,小小度得到的礼品数 样例输入
-
188888 88888 88888
样例输出 -
1
1 #include
2 using namespace std; 3 4 // 5 // int CCalBit (int k) 6 int CCalBit(int k) 7 { 8 int count = 0; 9 while ( k )10 {11 count++;12 k = k / 10;13 }14 15 return count;16 }17 18 //19 // int CPowerTen(int k)20 int CPowerTen(int k)21 {22 int sum = 1;23 while ( k-- )24 {25 sum *= 10;26 }27 28 return sum;29 }30 31 //32 // int CCalLeftStarter(int x, int num)33 int CCalLeftStarter(int x, int num)34 {35 int result = num / CPowerTen(CCalBit(x));36 37 int temp = num % CPowerTen( CCalBit(x) );38 39 if (temp > x)40 {41 result++;42 }43 44 return result;45 }46 47 //48 // int CCalRightEnder(int x, int num)49 int CCalRightEnder(int x, int num)50 {51 int result = num / CPowerTen(CCalBit(x));52 53 int temp = num % CPowerTen(CCalBit(x));54 55 if (temp < x)56 {57 result--;58 }59 60 return result;61 }62 63 int main()64 {65 int t;66 cin >> t;67 while ( t-- )68 {69 int x, a, b;70 // input data71 cin >> x >> a >> b;72 73 // process it 74 int left_starter;75 left_starter = CCalLeftStarter(x, a);76 int right_ender;77 right_ender = CCalRightEnder (x, b);78 79 int result = right_ender - left_starter + 1;80 81 if (result < 0)82 {83 result = 0;84 }85 86 cout << result << endl;87 // output for test88 89 }90 91 return 0;92 }93 94 // end 95 // ism