题目:
天平
给你1g,3g,9g,27g....这样的砝码,每种一个。你可以任意选择,请问所选出来的 砝码重量
第N小的是由哪几个砝码组成的。
Input
一个数字N,1<N<=10^6
Output
输出你所选择的砝码,一行输出一个数字,数字从小到大
Sample Input
4
Sample Output
1
3
//第一小的总重量为0,第二小的总重量为1
第三小的总重量为3,第四小的总重量为4,第五小的总重量为9
思路:
作为一道T1,我光荣的WA掉了。
思路其实很简单,由于从0开始计数,所以n要先减一。
然后二进制分解,输出就好。
错因是3^n的表打小了…
代码:
#include<bits/stdc++.h>
using namespace std;
#define maxn 1000000
#define read(x) scanf("%d",&x)
int n;
int a[maxn+5];
int main() {
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
a[0]=1;
for(int i=1;i<=maxn;i++) {
a[i]=a[i-1]*3;
}
read(n);n--;
for(int i=0;n;i++) {
if(n%2) printf("%d\n",a[i]);
n/=2;
}
return 0;
}