以前会做的题,昨天做发现不会做了...蛋都碎了,看来必须保持头脑灵活
对于一个整数n,定义其各位数字和的函数ds(n) = n的各位数字和
于是,我们有 ds(n) % 3 == n % 3
对于数列里的某一项a[n] = 123456.......n,它除以3得到的余数应该是
(ds(1) + ds(2) + ds(3) + .... + ds(n)) % 3
= (ds(1) % 3 + ds(2) % 3 + ds(3) % 3 + ... + ds(n) % 3) % 3
= (1 % 3 + 2 % 3 + 3 % 3 + ... + n % 3) % 3
= (1 + 2 + 0 + 1 + 2 + 0 + ... + n % 3) % 3
不多说了,解法明显出来了。
#include#include using namespace std;typedef unsigned int uint;int main() { uint N, p; scanf("%u", &N); p = N % 3; printf("%d\n", N / 3 * 2 + p / 2); return 0;}