数学题
考虑样例中的2 8
,那么相当于考虑18,28,38,…,98中有几个能被3整除。
我们知道当数字上所有位数加起来能被3整除时,这个数能被3整除,而我们可以将1-9分成三组:369,147,258,分别是模3余0,1,2三种情况那么不管个位是几,总能找到合适的一组去匹配它,所以个数就是3.
容易知道这个结论是可以推广到n位的.
那么我们只需要计算99…9-10…0中能被3整除的有几个数,即(99…9-10…0+1)/3
#include <bits/stdc++.h>
using namespace std;
int main() {
int T;
cin >> T;
for(int a = 0; a < T; ++a){
int c, w;
cin >> c >> w;
int start = (int)pow(10, c-2);
int end = 0;
for(int i = 0; i < c-1; ++i){
end = end*10+9;
}
int count = end-start+1;
printf("case #%d:\n%d\n", a, count/3);
}
return 0;
}
markdown的支持好差啊