洛谷每日一题
今天分享的是数列问题,很有意思。
题目描述
样例示范
思想
这个题用的是3,但是如果换成2的话,就不难看出这个为2进制转十进制。
n为十进制数,转换二进制,然后再由二进制的数乘以相应底数,即为所求数。
1,2,3,4,5
01,10,11,100…
代码
#include<stdio.h>
#include<math.h>
int main()
{
int k,n;
long long int ans = 0,plus = 1;//以防数据超出范围
scanf("%d%d",&k,&n);
while(n)//二进制转十进制做法
{
ans += (n % 2) * plus;//取余乘以底数
n /= 2;
plus *= k;
}
printf("%ld",ans);
return 0;
}
总结
这题主要难点在于看不出此题为二进制转十进制做法,还有用代码实现二进制转十进制,这些都是难点,希望大家能用心体会。