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);
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章