zoukankan      html  css  js  c++  java
  • Division UVa725

    题意:输入一个n(2<=n<=79)

    找出是否从存在abcde/fghij=n的表达式

    直接枚举,对于每一个fghij,判断abcde,所有数字不相等就可以(每个数字都出现),但要注意枚举的范围,还有格式,格式真的头疼。

    代码如下

    #include <bits/stdc++.h>
    #define inf 0x3f3f3f3f
    #define INF 0x7fffffffffffffff
    
    typedef long long ll;
    const double PI=3.1415926535897931;
    const long long mod=1e9+7;
    const int MA= 1e7+10;
    const int ma= 2*1e5+10;
    const int few=1e3+10;
    const int maxn=1e8+10;
    using namespace std;
    //////////////////////////////////////////////
    
    int check(int a,int b)
    {
        int vis[10];
        memset(vis,0,sizeof(vis));//记录每个数字的是否出现
        if(a>98765)
            return 0;//abcde不可能大于这个数
        string str1,str2;
        str1=to_string(a);
        str2=to_string(b);
        for(int i=0; i<str1.size(); i++)
        {
            vis[str1[i]-48]=1;
        }
        for(int i=0; i<str2.size(); i++)
        {
            vis[str2[i]-48]=1;
        }
        if(b<10000)
            vis[0]=1;//4位数的话,手动加上前置0
        int sum=0;
        for(int i=0; i<10; i++)
            sum+=vis[i];
        return sum==10;//检查所有数字是否出现,即abcde和fghij所有数字不相同。
    }
    int main()
    {
        int cnt=0,n;
        while(cin>>n&&n)
        {
            if (cnt++)
                cout<<endl;
            int flag=0;
            for(int i=1234; i<99999; i++)
            {
                if(check(n*i,i))
                {
                    printf("%05d / %05d = %d
    ",i*n,i,n);
                    flag = 1;
                }
            }
            if(!flag)
            {
                printf("There are no solutions for %d.
    ",n);//蛋疼的输出格式,啊啊啊啊啊啊啊啊啊啊啊啊啊
            }
        }
        return 0;
    }
  • 相关阅读:
    微信支付退款部分代码
    Raspberry PI 点亮LED
    Raspberry PI 摄像头
    RaspberryPI 3B系统烧录
    MySQL基础使用
    MySQL数据库管理系统概述
    Eclipse创建JAVA项目
    Brup Suite拦截https请求
    Github 第一个仓库
    python os模块主要函数
  • 原文地址:https://www.cnblogs.com/Aracne/p/12387353.html
Copyright © 2011-2022 走看看