数学/找规律/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 }

 

你可能感兴趣的:(div)