首页 > 其他分享 >P1008 [NOIP1998 普及组] 三连击

P1008 [NOIP1998 普及组] 三连击

时间:2022-08-21 20:12:57浏览次数:62  
标签:连击 P1008 int 987 三位数 123 NOIP1998

P1008 [NOIP1998 普及组] 三连击

 题目描述:将 1,2,…,9 共 9个数分成 3 组,分别组成 3 个三位数,且使这 3个三位数构成 1:2:3的比例,试求出所有满足条件的 3个三位数。 这道题解法有很多种,题目说了,按照每行第一个数字升序排列,那么在循环找数的时候,就要以第一个数为主,从小往大找.接着,我们还知道三位数中123是每个数字都不重复且最小的,987是每个数字都不重复且最大的,所以,第一个数的循环范围是大于123且它的三倍小于987,即987/3≥a≥123,再把这三个数的个位十位百位都求出来,接下来从小到大排序,最后判断是否和{1,2,3,4,5,6,7,8,9}相等就行了,代码如下。
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    int a,b,c;
    int i,j; 
    int s[9];
    for(a=123;a<=329;a++)
    {
        b=a*2;
        c=a*3;  //让三个数成比例 
        s[0]=a/100;s[1]=a%100/10;s[2]=a%10;//分离每一位数,并用数组记录 
        s[3]=b/100;s[4]=b%100/10;s[5]=b%10;
        s[6]=c/100;s[7]=c%100/10;s[8]=c%10;
        
        for(i=0;i<8;i++)
        {
            for(j=i+1;j<9;j++)
            {
                if(s[i]==s[j]||s[i]==0||s[j]==0) break;//判断元素是否相等 
            }
            if(j<9) break;
        }
        if(i==8&&j==9)
          cout<<a<<" "<<b<<" "<<c<<" "<<endl;
    }
    return 0;
 } 

 

标签:连击,P1008,int,987,三位数,123,NOIP1998
From: https://www.cnblogs.com/xdzxlsy/p/16610710.html

相关文章

  • [NOIP1998 普及组] 三连击
    生成九位一到九的全排列,按题目分割、过滤#include<iostream>#include<vector>#include<algorithm>boolvis[20];intqueue[50];intanswers[500];intcnt=0;void......
  • P1008 [NOIP1998 普及组] 三连击
    P1008[NOIP1998普及组]三连击分析:根据题意,有1-9这9个数要分成三组组成三个三位数,意味着这9个数只能出现一次,且三个三位数的比例为1:2:3,由此可以得知这三个数中最小的那......
  • [NOIP1998 普及组] 三连击
    [NOIP1998普及组]三连击思路:本题可以运用暴力枚举法,因为题目中有9个数字,所组成的3个三位数a,b,c的各个位数上的数的乘积与这已知的9个数的乘积相等,并且b=2*a,c=3*a。从能......
  • P1008 [NOIP1998 普及组] 三连击
    #include<bits/stdc++.h>usingnamespacestd;intmain(){ for(inta=123,b,c;a<=329;a++) { b=2*a;c=3*a; if((a%10)*(a/10%10)*(a/100)*(b%10)*(b/10%10)*(b/100)*(c%1......
  • P1008 [NOIP1998 普及组] 三连击
    试题分析:将1到9九个数分成3组,分别组成3个三位数,且使这3个三位数构成1:2:3的比例,数值较小,所以暴力枚举算法分析:因为4*3=12,超过了10,所以百位的数最多为3,因为1到9每个......
  • [NOIP1998 普及组] 三连击
    试题分析:题目要求三个三位数是由1~9中分成三组组成的,也就是说三个数中每个位数上的数字都不相同,然后三个三位数要符合1:2:3的比例关系,所以我们可以直接将i看做第1个三位数,剩......