京东笔试_自余数
输入:输入n 和n个区间
输出:输出给定区间的自余数个数
自余数定义: n%sum(n)==1 ; 其中sum(n)表示n各位数字之和,sum(11)=1+1=2;
1 #include2 using namespace std; 3 int table[1000001] = {0}; 4 int main() 5 { 6 int n; 7 int tmp, sum, x, y; 8 for (int i = 1; i < 1000001; i++) 9 { 10 tmp = i; 11 sum = 0; 12 while (tmp) 13 { 14 sum += tmp % 10; 15 tmp /= 10; 16 } 17 table[i] = i % sum == 1 ? table[i - 1] + 1 : table[i - 1]; 18 } 19 cin >> n; 20 for (int i = 0; i < n; i++) 21 { 22 cin >> x >> y; 23 cout << table[y] - table[x - 1]; 24 } 25 return 0; 26 }
输入:
3 11 11 11 13 1 20
输出:
1 2 3
20以内的自余数分别是11,13,17。