数学/找规律/sgu105 Div 3
题意
There is sequence 1, 12, 123, 1234, ..., 12345678910, ... . Given first N elements of that sequence. You must determine amount of numbers in it that are divisible by 3.
有种数列:1,12,123..给出一个n,求这个数列中能被3整除的数的个数
分析
先来看看这几组数 第三列数表示1234..n这样的数除以3的余数,第四列数表示能被3整除的个数,即为答案
1 1 1 0
2 12 0 1
3 123 0 2
4 1234 1 2
5 12345 0 3
6 123456 0 4
7 1234567 1 4
8 12345678 0 5
9 123456789 0 6
观察一下第三列数,发现它的规律是100100100...
易知,每三个n中就有一个n是3的倍数
比如第三行数123,它能被3整除
而1234多了一个4,4%3=1,所以只要添上一个%3=2的数,即可多一个能被3整除的数,12345即可
而再多一个6呢,显然6是可以被3整除的,这样答案又多了一个....
至此找到规律:
当多加上一个%3=0的数,答案+1
多加上一个%3=1的数,答案不变
多加上一个%3=2的数,跟上一个%3=1的数正好凑成了一个3的倍数,答案+1
Accepted Code
1 /* 2 PROBLEM:sgu105 3 AUTHER:Rinyo 4 MEMO:数学 5 */ 6 7 8 #include<cstdio> 9 int n; 10 int main() 11 { 12 scanf("%d",&n); 13 int ans=n/3*2+((n%3)==2?1:0); 14 printf("%d",ans); 15 return 0; 16 }