首页 > 技术文章 > 京东笔试_自余数

wined 2022-03-23 17:37 原文

输入:输入n 和n个区间
输出:输出给定区间的自余数个数
自余数定义: n%sum(n)==1   ;        其中sum(n)表示n各位数字之和,sum(11)=1+1=2;

 1 #include <bits/stdc++.h>
 2 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。

 

推荐阅读