题解 CF656D 【Rosetta Problem】

wjyyy

2018-03-31 17:18:57

Solution

**感觉这个题的难度在开玩笑** 难度应该不亚于[000001](https://www.luogu.org/problem/show?pid=CF409F)这个愚人节题(明天就是愚人节了) 这是一个数学题,要求一个数$a(\leq1,000,000)$转化为其8进制数,问其中的1有多少 正如转为二进制一样,转为八进制可以用短除法,我们来看样例的129短除8的结果 $1\backslash\underline{129}$ $0\backslash\underline{16}$ $2\backslash\underline{2}$ 所以129的八进制数是201 所以在做第一次循环时,$a$ $mod$ $8$的结果就是第一位的数,只需要判断这个数是不是$1$即可。 ## Code: ```cpp #include<cstdio> int main() { int a,sum=0; scanf("%d",&a); while(a) { if(a%8==1) sum++; a/=8; } printf("%d\n",sum); return 0; } ```