SGU_105

    看了别人的解题报告之后就恍然大悟了,我们不妨设第i项是a[i],另外补一个a[0]=0,于是有a[i]%3=(a[i-1]*10^x+i)%3=a[i-1]%3+i%3,然后我们再把i%3列成一个表就会发现是1,2,0,1,2,0…,这样的一个循环,于是我们就很容易发现每三项中的后两项能被三整除。

#include<stdio.h>
#include<string.h>
int N;
int main()
{
while(scanf("%d", &N) == 1)
printf("%d\n", (N - 1) / 3 * 2 + (N - 1) % 3);
return 0;
}


posted on 2011-12-23 21:06  Staginner  阅读(195)  评论(0编辑  收藏  举报