本文主要是介绍xtu oj 1150 n!进制 2.0,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
n!进制是指每i位的权值是(i+1)!,每一位的系数为0~i+1。 比如n!进制的21 = 2*2! + 1*1! = 5。给你一个10进制数,求其n!进制的值。
输入
每行一个10进制的整数n,0≤n≤3,628,799。
输出
每行输出一个样例的结果。
样例输入
0 1 10 100 3628799
样例输出
0 1 120 4020 987654321
AC代码
#include<stdio.h>
int a[20]={};
void init(){int i;a[1]=1;for(i=2;i<20;i++){a[i]=a[i-1]*i;}
}
int main(){int n;init();while(scanf("%d",&n)!=EOF){if(n<0)break;else if(n==0)printf("0\n");else if(n==1)printf("1\n");else{int i,j=1,max=0,t=0;while(a[j]<=n){j++;}max=j-1;for(i=max;i>0;i--){t=n/a[i];printf("%d",t);n%=a[i];}printf("\n");}}
}
利用递归思想求阶乘,Output Limit Exceed输入没有终止,输入中采用!=EOF
这篇关于xtu oj 1150 n!进制 2.0的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!