|洛谷|NOIP2006|模拟|P1062 数列

3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2,3^0+3^1+3^2

把i转化为2进制,i为第几项数

对应于上面

1 10 11 100 101 110 111

找到规律,把n转为2进制即可解决

#include
#include
#include
#include
#define ms(i,j) memset(i,j, sizeof i);
using namespace std;
int main()
{
	int k,n;
	scanf("%d%d", &k, &n);
	int ans = 0;
	int base = 1;
	while (n!=0)
	{
		if (n&1)
		{
			ans += base;
		}
		base *= k;
		n>>=1;
	} 
	printf("%d\n", ans);
    return 0;
}


转载于:https://www.cnblogs.com/flyinthesky1/p/6384249.html

你可能感兴趣的:(|洛谷|NOIP2006|模拟|P1062 数列)