147
147
| Time Limit: 1000MS | Memory Limit: 65535KB |
| Submissions: 76 | Accepted: 24 |
Sample Input
1 3 4
Sample Output
1 7 11
解析:
这道题看上去不那么简单,其实仔细就会发现,num的值是:1~3时,结果为1位数;4~9时,结果为2位数;10~27时,结果为3位数·····那么根据num的值就容易确定结果的位数。并且会发现结果每位数上1、4、7都是循环有序出现的,那么num%3就能得到这位上的数值,num/3就可以往前推,这样迭代下去就行了
# include<stdio.h> int dg[3]={7,1,4}; int t[1005]; int main() { int num,sum,sign; int i,cnt; while(scanf("%d",&num)!=EOF) { sign=1; sum=0; cnt=0; while(sum<num)//计算出位数cnt { sign*=3; sum+=sign; cnt++; } for(i=cnt-1;i>=0;i--)//由于只有三个数,并循环有序出现,因此要可以如此赋值 { t[i]=dg[num%3]; if(num%3) num=num/3; else num=num/3-1; } for(i=0;i<cnt;i++) printf("%d",t[i]); printf("\n"); } return 0; }
浙公网安备 33010602011771号