题解 CF656D 【Rosetta Problem】
wjyyy
2018-03-31 17:18:57
**感觉这个题的难度在开玩笑**
难度应该不亚于[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;
}
```