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

 

posted @ 2012-12-02 18:51  Rinyo  阅读(1001)  评论(0编辑  收藏  举报