首页 > 其他分享 >CSP历年复赛题-P1008 [NOIP1998 普及组] 三连击

CSP历年复赛题-P1008 [NOIP1998 普及组] 三连击

时间:2024-05-20 09:32:03浏览次数:22  
标签:10 连击 P1008 int 987 while 123 NOIP1998

原题链接:https://www.luogu.com.cn/problem/P1008

题意解读:将 1,2,…,9共 9个数分成3组,分别组成3个三位数,且使这 3 个三位数构成 1:2:3 的比例,枚举所有的组合即可。

解题思路:

设定三个数a、b、c

枚举a,最小123,最大987

b = a * 2, c = a * 3

判断b、c是否是三位数,且a、b、c中所有数字正好是1~9,如果符合则输出三个数

100分代码:

#include <bits/stdc++.h>
using namespace std;

bool check(int a, int b, int c)
{
    if(b < 123 || b > 987 || c < 123 || c > 987) 
        return false;
    int h[10] = {0};
    while(a)
    {
        h[a % 10] = 1;
        a /= 10;
    }
    while(b)
    {
        h[b % 10] = 1;
        b /= 10;
    }
    while(c)
    {
        h[c % 10] = 1;
        c /= 10;
    }
    for(int i = 1; i <= 9; i++)
    {
        if(!h[i]) return false;
    }
    return true;
}

int main()
{
    int a, b, c;
    for(int a = 123; a <= 987; a++)
    {
        b = 2 * a;
        c = 3 * a;
        if(check(a, b, c))
        {
            cout << a << " " << b << " " << c << endl; 
        }
    }
}

 

标签:10,连击,P1008,int,987,while,123,NOIP1998
From: https://www.cnblogs.com/jcwy/p/18201218

相关文章

  • CSP历年复赛题-P1009 [NOIP1998 普及组] 阶乘之和
    原题链接:https://www.luogu.com.cn/problem/P1009题意解读:  利用高精度计算阶乘之和,需要用到高精度乘法(高精度乘低精度)、高精度加法。  首先,思考不利用高精度如何解题,直观方法就是遍历i从1到n,每次乘i得到i的阶乘,然后累加到结果,代码如下:#include<bits/stdc++.h>usingnam......
  • CSP历年复赛题-P1010 [NOIP1998 普及组] 幂次方
    原题链接:https://www.luogu.com.cn/problem/P1010题意解读:输出一个正整数的2的幂次方表示,需要用到二进制数学知识,将整数拆解成2的次幂之和,幂次方也要进行拆解,因此容易想到通过递归处理。解题思路:先看样例,给定整数137,要拆解成2的幂次方之和,先考虑i使得刚好137>=2^i时,i取7,因此2......
  • 洛谷 P1012 [NOIP1998 提高组] 拼数 题解
    题目简述设有$n$个正整数$a_1\dotsa_n$,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。题目分析定义设$X$为数字$x$的字符串形式。$A+B$表示字符串$A$和字符串$B$相连组成的字符串。思路既然要构造最优解,显然如果有不优的情况的话,就需要对序列进行......
  • P1010 [NOIP1998 普及组] 幂次方
    题目:P1010[NOIP1998普及组]幂次方[NOIP1998普及组]幂次方题目描述任何一个正整数都可以用2的幂次方表示。例如137=27+23+2^0。同时约定次方用括号来表示,即a^b可表示为a(b)。由此可知,137可表示为2(7)+2(3)+2(0)进一步:$7=22+2+20(2^1用2表示),并且3=2+2^......
  • Godot.NET C#IOC重构(9-10):三连击,攻击框
    目录前言AnimationPlayer和AnimatedSprite2D将导出属性添加到关键帧里面。状态机构建核心代码完整代码实现效果碰撞框和受攻击框全局类HitBox:攻击框HurtBox:受击框实现效果添加Player攻击总结前言这篇博客来深入讲解一下Godot中的AnimationPlayerAnimationPlayer和AnimatedSpr......
  • 洛谷 P10084 [GDKOI2024 提高组] 计算
    洛谷传送门第一步是一个经典结论,\(L=m^{\gcd(a,b)}+1\),\(R=m^{\gcd(c,d)}\)。因为\(L\equiv1\pmodm\)且\(R\equiv0\pmodm\),所以可以把问题的范围改成\([1,n=R-L+1]\)。写出选数的生成函数:\[F(x)=\prod\limits_{i=1}^n(1+x^i)\]我们希望求......
  • 「洛谷」题解:P1008 三连击
    题目传送门题目背景本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。题目描述将\(1,2,\ldots,9\)共\(9\)个数分成\(3\)组,分别组成\(3\)个三位数,且使这\(3\)个三位数构成\(1:2:3\)的比例,试求出所有满足条件的......
  • P1618 三连击(升级版)
    P1618三连击(升级版)题目将\(1,2,\ldots,9\)共\(9\)个数分成三组,分别组成三个三位数,且使这三个三位数的比例是\(A:B:C\),试求出所有满足条件的三个三位数,若无解,输出No!!!。输入三个数,\(A,B,C\)。输出若干行,每行\(3\)个数字。按照每行第一个数字升序排列。样例输入......
  • 洛谷 P1008 [NOIP1998 普及组] 三连击
    这道题我们可以用桶排序来做,代码如下:#include<bits/stdc++.h>//万能头 usingnamespacestd;//好习惯 inta[10];//一个桶数组,来确定是否有重复的 intmain(){   ints1,s2,s3;//定三个函数,用于判断    intsum=0;//用于判断数字是否重复    for(int......
  • P1618 三连击(升级版)
    题目链接:#include<bits/stdc++.h>usingnamespacestd;intp[10],sum;intmain(){ intA,B,C; boolflag=false; scanf("%d%d%d",&A,&B,&C); for(inti=1;i<=999/C;i++){ memset(p,0,sizeofp); sum=0; ......