原题题号:1603
Ada三岁了,会掰着指头数数了.她的爸爸既是欢喜,又杂着忧愁.欢喜的是,教了她三年,终于会数了.
忧的是,Ada对数字实在不敏感啊!Ada的爸爸又准备了新的题目训练她. ADA IV型数的定义如下:
把一个正整数的各个位上的数字依次组成一个数列,如果该数列是等差数列,则该数为ADA IV型数.如13579和2468都是ADA IV型数,153和246810都不是ADA IV型数.为了避免不必要的麻烦,规定区间[1,99]的数均为ADA IV型数.
给定一个区间[A,B],其中1<=A<=B<=1000000000,问该区间含有多少个ADA IV型数.这个问题对ADA来说显然太难了,但是我想你行的,试一试吧。
由多组测试数据组成, 组数不超过100。
每一组测试数据仅有一行,只包含由空格分开的整数A和B。
对于每一组测试数据,输出对应区间的ADA IV型数的总数目,每组一行。
1 100
112 160
99
4
就直接暴力打表,造福后代吧=-=。代码如下:
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
int main()
{
vector<int>num{
111, 123, 135, 147, 159, 210,
222, 234, 246, 258, 321, 333,
345, 357, 369, 420, 432, 444,
456, 468, 531, 543, 555, 567,
579, 630, 642, 654, 666, 678,
741, 753, 765, 777, 789, 840,
852, 864, 876, 888, 951, 963,
975, 987, 999, 1111, 1234, 1357,
2222, 2345, 2468, 3210, 3333, 3456,
3579, 4321, 4444, 4567, 5432, 5555,
5678, 6420, 6543, 6666, 6789, 7531,
7654, 7777, 8642, 8765, 8888, 9630,
9753, 9876, 9999, 11111, 12345, 13579,
22222, 23456, 33333, 34567, 43210, 44444,
45678, 54321, 55555, 56789, 65432, 66666,
76543, 77777, 86420, 87654, 88888, 97531,
98765, 99999, 111111, 123456, 222222, 234567,
333333, 345678, 444444, 456789, 543210, 555555,
654321, 666666, 765432, 777777, 876543, 888888,
987654, 999999, 1111111, 1234567, 2222222, 2345678,
3333333, 3456789, 4444444, 5555555, 6543210, 6666666,
7654321, 7777777, 8765432, 8888888, 9876543, 9999999,
11111111, 12345678, 22222222, 23456789, 33333333, 44444444,
55555555, 66666666, 76543210, 77777777, 87654321, 88888888,
98765432, 99999999, 111111111, 123456789, 222222222, 333333333,
444444444, 555555555, 666666666, 777777777, 876543210, 888888888,
987654321, 999999999};
int ans = 0;
int a, b;
while (cin >> a >> b)
{
if(a<=99)
ans += 100 - a;
if(b<=99)
ans -= 99 - b;
for(auto i:num)
{
if(i>=a&&i<=b)
ans++;
else if(i>b)
break;
}
cout << ans << endl;
ans = 0;
}
return 0;
//system("pause");
}
本文作者:TTQ
本文链接:https://blog.ponder.fun/archives/23.html
最后修改时间:2020-02-09 13:19:38
本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!