标签:10 连击 洛谷 P1008 b% int 100% c% 100
题目链接:https://www.luogu.com.cn/problem/P1008
题目大意:
题目描述
将 1,2,…,91, 2, \ldots , 91,2,…,9 共 999 个数分成 333 组,分别组成 333 个三位数,且使这 333 个三位数构成 1:2:31 : 2 : 31:2:3 的比例,试求出所有满足条件的 333 个三位数。
输入格式
无
输出格式
若干行,每行 333 个数字。按照每行第 111 个数字升序排列。
这个题也是最开始就会想直接暴力,毕竟,一共才九个数排列组合,一共只有 9! 个,但是一个小问题就是怎么保证三个数中的各个位置不出现重复的数字
我们可以用相等的方法就是
例如三个数为 a, b,c
则有 a/100+a%100/10+a%100%10+b/100+b%100/10+b%100%10+c/100+c%100/10+c%100%10=1+2+3+4+5+6+7+8+9&&a/100*a%100/10*a%100%10+b/100*b%100/10*b%100%10*c/100*c%100/10*c%100%10=1*2*3*4*5*6*7*8*9;
这样就可以保证数字的相等了
代码如下
#include<bits/stdc++.h> using namespace std; const int N = 1000; int a[N]={0}; int judge(int a,int b,int c){ int a1=a/100,b1=b/100,c1=c/100; a%=100,b%=100,c%=100; int a2=a/10,b2=b/10,c2=c/10; a%=10,b%=10,c%=10; // cout<<"\t"<<a<<b<<c<<a1<<b1<<c1<<a2<<b2<<c2<<endl; if(a+b+c+a1+a2+b1+b2+c1+c2==1+2+3+4+5+6+7+8+9&&a*b*c*a1*a2*b1*b2*c1*c2==(1)*(2)*(3)*(4)*(5)*(6)*(7)*(8)*(9)){ return 1; } return 0; } int main(){ for(int i=123;i<=333;i++){ int b=i*2; int c=i*3; if(judge(i,b,c)&&b<=987&&c<=987){ cout<<i<<" "<<b<<" "<<c<<endl; } } system("pause"); return 0; }
标签:10,连击,洛谷,P1008,b%,int,100%,c%,100
来源: https://www.cnblogs.com/like723/p/16079060.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。