zoukankan      html  css  js  c++  java
  • poj2325 大数除法+贪心

    将输入的大数除以9 无法整除再除以 8,7,6,..2,如果可以整除就将除数记录,将商作为除数继续除9,8,...,3,2. 最后如果商为1 证明可以除尽 将被除过的数从小到大输出即可

    #include<cstdio>
    #include<cstring>
    #define mem(a) memset(a,0,sizeof (a))
    using namespace std;
    char s[1005], t[1005];
    int bang[15], n;
    bool div(int p)
    {
        int i, x= 0;
        mem(t);
        for(i = 1; i <= n; i++)
        {
            x = x*10 +s[i];//从最高位开始运算 
            t[i] = x/p;//模拟竖式除法
            x %= p;
        }
        if(!x)//如果可以除尽 那么就将原来的数变更为商
        {
            for(x = 1; t[x] == 0; x++);x--;
            n -= x;//
            for(i = 1; i <= n;i++)
                s[i] = t[i+x];
            return 1;
        }
        else return 0;
    }
    int main()
    {
        int i;
        while(scanf("%s",s+1), s[1]!='-')
        {
            mem(bang);
            if(!s[2])
            {
                printf("1%c
    ",s[1]);
                continue;
            }
            n = strlen(s+1);
            for(i = 1;i <= n; i++) s[i] =s[i] -'0';
            for(i = 9; i > 1; i--)
            {
                while(div(i))
                {
                    bang[i]++;
                }
            }
            if(n>1) printf("There is no such number.
    ");//如果都不能整除
            else 
            {
                    for(i = 2; i <= 9;i++)
                        while(bang[i]--) printf("%d",i);
                    printf("
    ");
            }
        }
        return 0;
    }
  • 相关阅读:
    数据库链接字符汇总
    CSS 继承深度解析
    autofac
    SmartStoreNet解图
    RPM ,DPKG ,YUM ,APT-GET
    ubuntu中查看各种设备和资源的命令汇总
    linux中一些常用的命令总结
    latex 插图排版
    matplotlib 出图示例
    latex 生成pdf
  • 原文地址:https://www.cnblogs.com/Jadon97/p/6785914.html
Copyright © 2011-2022 走看看