前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >n! 进制

n! 进制

作者头像
Kindear
发布2017-12-29 17:39:48
8540
发布2017-12-29 17:39:48
举报

n! 进制

Time limit per test: 1.0 seconds

Time limit all tests: 1.0 seconds

Memory limit: 256 megabytes

n! 进制是指从数的最低位开始,第 i 位的权值是 (i+1)!,第 i 位取值范围为 0~i+1,i 从 0 开始。

例如: n! 进制的 21 对应10进制的 5, 计算方法为:2×2!+1×1!=5。 n! 进制的 120 对应10进制的 10,1×3!+2×2!+0×1!=10。

给你一个10进制数,求其 n! 进制的值。

Input

第 1 行为一个整数 T (1≤T≤10),表示问题数。

接下来 T 行,每行一个10进制的整数 n,0≤n≤3628799 (10!−1)。

Output

对于每个问题,输出一行问题的编号(0 开始编号,格式:case #0: 等),然后在一行中输出十进制数的对应的 n!进制数的值。

Examples

input

代码语言:javascript
复制
5
0
1
10
100
3628799

output

代码语言:javascript
复制
case #0:
0
case #1:
1
case #2:
120
case #3:
4020
case #4:
987654321

Note

n! 表示 n 的阶乘。

代码语言:javascript
复制
#include<bits/stdc++.h>
using namespace std;
int jc[15];
int jj(int n)
{
    if(n==0||n==1)
        return 1;
    return n*jj(n-1);
}
int main()
{
    for(int i=1;i<=9;i++)
    {
        jc[i]=jj(i);
    }
    int t;
    int cases;
    cin>>cases;
    for(int i=0;i<cases;i++)
    {
        cin>>t;
        cout<<"case #"<<i<<":"<<endl;
        bool iflag=false;
        for(int j=9;j>=1;j--)
        {
           int u=t/jc[j];
           if(u!=0)
           {
               cout<<u;
               t=t-u*jc[j];
               iflag=true;
           }
           else
           {
               if(iflag)
                cout<<u;
           }
        }
cout<<endl;
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-05-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • n! 进制
    • Input
      • Output
        • Examples
          • Note
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档