又被long long坑了——三进制转换

我讨厌计算精度那么高的东西。 把输入的数转换为3进制,shuoj上的简单题。 写了个递归,每次把除三的余数存下来入栈,然后除三递归。 递归结束后出栈即可。 结果被long long坑到了。。。。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h> 
#include <math.h>

int st[100000],to=0;
void tobase3(long long n){
if(n>0){
st[to]=n%3;
to++;
tobase3(n/3);
}
}
int main(){
int i;
long long n;
while(~scanf("%lld",&n)){
to=0;
tobase3(n);
for(i=to-1;i>=0;i--){
putchar(st[i]+48);
}
printf("n");
}
return 0;
}