首页 > 其他分享 >UVA 725 Division

UVA 725 Division

时间:2022-12-21 18:12:35浏览次数:61  
标签:Division le return 10 int st ++ 725 UVA

原题Vjudge

题目大意

给你个\(N\)
判断有没有两个整数满足\(\frac{A}{B} = N\),并且\(A和B\)的各位数字刚好构成\(0\sim9\)的一个排列

解题思路

这题乍一看挺难的,但是范围很小(\(2\le N \le 79\)),那我们就可以着手写暴力
将上述等式进行变形,可以得到\(A = NB\),而\(N\)是固定的,所以我们只需要算出\(B\)
就可以得到\(A\)了。对于每对\(A和B\)我们还需要判断是否构成排列
这个简单,将每位的数字做一个桶计数,然后看看是不是从\(0\sim9\)都有就行了

枚举细节

关于这个枚举,我们可以得到\(B\)是四位数,而且\(A\)是五位数,那么可以得到
对于任意的\(B\)合法,有\(1234\le B\le 98765 \div n\),
所以可以这样枚举我们的B

for (int B = 1234; B * n <= 98765; B ++ ) 

代码实现

#include <iostream>
#include <cstring>

using namespace std;

int st[15], n, kase;

bool isPerm(int B, int A) 
{
    memset(st, 0, sizeof st);
    if (A > 98765) return false ;
    
    for (int i = 0; i < 5; i ++ ) 
    {
        st[A % 10] ++, st[B % 10] ++ ;
        A /= 10, B /= 10;
    }
    for (int i = 0; i < 10; i ++ )
        if (st[i] != 1) return false ;
    return true ;
}

int main()
{
    while (scanf("%d", &n), n) 
    {
        if (kase ++ > 0) printf("\n"); // 恶心的输出
        
        bool soul = false; //是否有解
        for (int B = 1234; B * n <= 98765; B ++ ) 
        {
            if (isPerm(B, n * B)) //能否构成排列
            {
                printf("%05d / %05d = %d\n", n * B, B, n);
                soul = true ; //有解
            }
        }
        if (!soul) printf("There are no solutions for %d.\n",n);
    }
    
    return 0;
}

Accepted!!

标签:Division,le,return,10,int,st,++,725,UVA
From: https://www.cnblogs.com/StkOvflow/p/16996861.html

相关文章

  • UVA 673 Paretheses Balance
    原题Vjudge题目大意怼给你一堆括号,判断是否合法有三条规则(1)空串合法(2)如果\(A和B\)都合法,则\(AB\)合法(例如:\(()和[]\)都合法,则\(()[]\)合法)(3)如果\(A\)合法,则\((A)和[A......
  • UVA 11988 Broken Keyboard
    原题Vjudge题目大意给定一个字符串,字符串中可能含有\([\)字符或者\(]\)字符被\([]\)框起来的字符串将会被移到最开头,(如果之前有过\([]\),则越晚出现的\([]\)内字符串会被......
  • UVA 442 Matrix Chain Multiplication
    原题Vjudge题目大意模拟矩阵链乘的计算,如果出现错误就输出error,否则输出总共的乘法次数对于一个矩阵\(A(m\timesn),B(n\timesp)\)乘法次数为\(m\timesn\timesp......
  • UVA 514-Rails
    原题Vjudge题目大意给定一个入栈序列\([1,2,3....,n]\),判断出栈序列\([a_{1},a_{2}.....a_{n}]\)是否合法解题思路这道题目我们可以用一个栈与双指针结合的算法我们设......
  • UVA1615 高速公路 Highway
    #include<iostream>#include<cmath>#include<algorithm>#include<cstdio>usingnamespacestd;typedeflonglongll;typedefdoubledb;constdbeps=1e-4......
  • UVA1398 Meteor
    每颗流星经过框的时间用一个左开右开的开区间来表示,然后就是简单的求最大区间覆盖问题了。其中求开区间的方法很巧妙,可以节省一些代码量。#include<iostream>#include......
  • UVA1343 旋转游戏 The Rotation Game
    #include<iostream>#include<string>#include<algorithm>#include<cstring>usingnamespacestd;constintread[25][2]={ {0,0}, {1,3},......
  • 程序设计基础实验课 单元六的题-UVA10410 TreeReconstruction 树重建
    入门指南题面:  洛谷题面:   观看的题解:https://www.cnblogs.com/jerryRey/p/4622927.html  对样例区样例画的一些图:       题目的一些争议......
  • UVALive 2038 Strategic game--树形dp
    原题链接:​​http://vjudge.net/problem/UVALive-2038​​题意:一棵树,n个点,0为根,求最少的点可以覆盖所有边。分析:dp[u][0]表示u点不选;dp[u][1]表示该点选择。#defin......
  • UVALive 4015 Caves--树形dp
    原题链接:​​http://vjudge.net/problem/UVALive-4015​​题意:n个部落,编号0到n-1,n-1条路连接n个部落,连成一棵树,机器人从树根出发,问在最多走x米最多经过多少部落。分析:dp[i......