ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

洛谷 P1618 三连击(升级版)

2021-12-28 15:05:13  阅读:161  来源: 互联网

标签:tmp 10 连击 洛谷 d% 三位数 num P1618 100


这就是一篇看完题解之后写后的题解,哈哈哈哈哈哈哈

原题目传送门

题目的大概描

这个题让我们输入三个数abc,使得在三位数中(100-999)存在三个数满足我们输入的比例(例如:1:2:3的三位数有192:384:576等),并把它们全部输出出来。
这道题特别像全排列问题,把三位数从头到位生成一边,看看有没有符合我们输入的三个数的比例的三位数。因此,对于我这种新手蒟蒻,肯定会第一时间想到STL中的next_permutation函数


开局一条分割线,就问你服不服?(orz

既然是全排列,那么我们就是去排列0-9的所有数字(因为数据本身就不多,使用next_permutation的空间和时间都是够的),看看从哪些排列里面能够得到我们想要的成比例的三位数。
因为最终我们需要判断的是三位数是否成比例,那么我们就需要把这些数以我们输入的比例乘出来(例如,192:384:576,把1926=3842=576*2,以此来判断,因此我们就需要加上一行特殊的处理)。

a=tmp/a; b=tmp/b; c=tmp/c;
do{
    if((100*num[1]+10*num[2]+num[3])*a==(100*num[4]+10*num[5]+num[6])*b && (100*num[1]+10*num[2]+num[3])*a==(100*num[7]+10*num[8]+num[9])*c){
        printf("%d%d%d %d%d%d %d%d%d\n",num[1],num[2],num[3],num[4],num[5],num[6],num[7],num[8],num[9]);
        cnt++;
    }
} while(next_permutation(num+1,num+10));

最后,如果有排列满足,那么我们就输出这个排列,让计数器++。如果计数器为0,那么就输出No!!!,即没有答案。完结撒花。

上代码

#include<bits/stdc++.h>
using namespace std;
int num[10]={0,1,2,3,4,5,6,7,8,9};
int a,b,c,tmp,cnt=0;
int main(){
    scanf("%d%d%d",&a,&b,&c);
    tmp=a*b*c;
    a=tmp/a; b=tmp/b; c=tmp/c;
    do{
        if((100*num[1]+10*num[2]+num[3])*a==(100*num[4]+10*num[5]+num[6])*b && (100*num[1]+10*num[2]+num[3])*a==(100*num[7]+10*num[8]+num[9])*c){
            printf("%d%d%d %d%d%d %d%d%d\n",num[1],num[2],num[3],num[4],num[5],num[6],num[7],num[8],num[9]);
            cnt++;
        }
    } while(next_permutation(num+1,num+10));
    if(cnt==0) printf("No!!!\n");
    system("pause");
    return 0;
}
credits @ElevenX (Luogu)

标签:tmp,10,连击,洛谷,d%,三位数,num,P1618,100
来源: https://www.cnblogs.com/gumitube/p/15740648.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有