1 3 4 9 10 12这个问题还真的……

//  1    3      4      9      10       12
// 3^0  3^1  3^0+3^1  3^2  3^0+3^2  3^1+3^2
//  1    2      3      4      5        6
//  1b   10b    11b    100b   101b     110b
// 把上面的二进制数为 1 的地方替换成 3 的相应位次方(从0开始)
// 并求和则得到相应的结果 
#include <stdio.h>

int main(void) {
	int k, N, a, b, c = 0, sum = 0, i, n;
	printf("请输入基数和第N项(中间用空格分开):");
	scanf("%d %d", &k, &N);
	n = N;
	while(N) {
		a = N % 2;
		N /= 2;
//		printf("%d\t%d\n", a, N);
		if(a) {
				b = 1;
			for(i = 0; i < c; i++) { 
				b *= k;
			}
//			printf("%d\n", b);
			sum += b;
		}
		c++;
	}
	printf("\n第%d项的数为%d", n, sum);
}
发布了159 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_39410618/article/details/101639361