zoukankan      html  css  js  c++  java
  • UVa 993

      题目大意:给一个非负整数n,寻找最小的自然数q使得q的各位数字的乘积等于n。

      对n进行2~9的因数分解,从9到2循环(分解成9比分解成3,3更小),同时要考虑0和1的特殊情况,除非n是0或1,否则q的各个数字不会有0和1出现。

     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 int main()
     5 {
     6 #ifdef LOCAL
     7     freopen("in", "r", stdin);
     8 #endif
     9     int cnt[10];
    10     int T;
    11     scanf("%d", &T);
    12     while (T--)
    13     {
    14         int n;
    15         scanf("%d", &n);
    16         if (n < 10)
    17         {
    18             printf("%d
    ", n);
    19             continue;
    20         }
    21         memset(cnt, 0, sizeof(cnt));
    22         bool ok;
    23         while (n > 9)
    24         {
    25             ok = false;
    26             for (int i = 9; i >= 2; i--)
    27                 if (n % i == 0)
    28                 {
    29                     ok = true;
    30                     cnt[i]++;
    31                     n /= i;
    32                 }
    33             if (!ok)   break;
    34         }
    35         if (!ok)
    36         {
    37             printf("-1
    ");
    38             continue;
    39         }
    40         cnt[n]++;
    41         for (int i = 2; i <= 9; i++)
    42             for (int j = 0; j < cnt[i]; j++)
    43                 printf("%d", i);
    44         printf("
    ");
    45     }
    46     return 0;
    47 }
    View Code
  • 相关阅读:
    mongo
    CSS常用属性
    nginx-proxy_cache缓存
    nginx防盗链
    oracle11g-centos部署
    VLAN高级特性
    路由
    网络摄像头分辨率
    前端开发调试线上代码的两款工具
    sql中 in , not in , exists , not exists效率分析
  • 原文地址:https://www.cnblogs.com/xiaobaibuhei/p/3259741.html
Copyright © 2011-2022 走看看