• 1435 位数阶乘


    基准时间限制:1 秒 空间限制:131072 KB 

    X是一个n位数的正整数 (x=a0a1...an1) 

    现在定义 F(x)=i=0n1(ai!)  , 比如F(135)=1!*3!*5!=720.

    我们给定一个n位数的整数X(至少有一位数大于1,X中可能有前导0),

    然后我们去找一个正整数(s)符合以下条件:

    1.这个数尽可能大,

    2.这个数中不能含有数字0或1。

    3.F(s)=F(x)

    Input
    每个测试数据输入共2行。
    第一行给出一个n,表示x为中数字的个数。(1<=n<=15)
    第二行给出n位数的正整数X(X中至少有一位数大于1)
    Output
    共一行,表示符合上述条件的最大值。
    Input示例
    4
    1234
    Output示例
    33222
     思路:找下合数的规律;
     1 #include<stdio.h>
     2 #include<algorithm>
     3 #include<string.h>
     4 #include<math.h>
     5 #include<stdlib.h>
     6 #include<queue>
     7 #include<iostream>
     8 using namespace std;
     9 char str[25];
    10 bool prime[25];
    11 int ans[25];
    12 int t[25];
    13 int ak[10000];
    14 int main(void)
    15 {
    16     int n;
    17     int i,j;prime[0] = true;
    18     for(i = 2; i < 20; i++)
    19     {
    20         if(!prime[i])
    21         {
    22             for(j = i; (i*j) < 20; j++)
    23             {
    24                 prime[i*j] = true;
    25             }
    26         }
    27     }prime[1]=true;
    28     scanf("%d",&n);
    29     scanf("%s",str);
    30     for(i = 0; i < n; i++)
    31     {
    32         t[i] = str[i]-'0';
    33     }
    34     int uu = 0;//printf("%d
    ",ak[0]);
    35     for(i = 0; i < n; i++)
    36     {
    37         if(!prime[t[i]])
    38         {
    39             ak[uu++] = t[i];
    40         }
    41         else if(t[i] == 4)
    42         {
    43             ak[uu++] = 2;
    44             ak[uu++] = 2;
    45             ak[uu++] = 3;
    46         }
    47         else if(t[i] == 6)
    48         {
    49             ak[uu++] = 3;
    50             ak[uu++] = 5;
    51         }
    52         else if(t[i] == 8)
    53         {
    54             ak[uu++] = 2;
    55             ak[uu++] = 2;
    56             ak[uu++] = 2;
    57             ak[uu++] = 7;
    58         }
    59         else if(t[i] == 9)
    60         {
    61             ak[uu++] = 3;
    62             ak[uu++] = 3;
    63             ak[uu++] = 2;
    64             ak[uu++] = 7;
    65         }
    66     }//printf("%d
    ",ak[0]);
    67     sort(ak,ak+uu);
    68     for(i = uu-1; i >= 0; i--)
    69     {
    70         printf("%d",ak[i]);
    71     }
    72     printf("
    ");
    73     return 0;
    74 }
    油!油!you@
  • 相关阅读:
    强烈推荐Seam实战
    关于写给大家看的C语言书(第2版)的读后感
    在Win7系统上安装ccnet 安装笔记
    使用Itext把html转换成pdf文件
    升级项目到Vs2010,编译时出现:MSB6006: “LC.exe”已退出,解决方法
    vs2010 插件不显示的问题处理。
    几个软件研发团队管理的小问题
    关于UML风格(第2版·英汉对照)的读后感
    C#本质论(第2版)的评论
    IDA Pro代码破解揭秘这本书怎么样
  • 原文地址:https://www.cnblogs.com/zzuli2sjy/p/5851431.html
Copyright © 2020-2023  润新知