描述
寻找规律数字:将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数的组数。
输入:
无
输出:
输出一行:满足条件的不同三个三位数的组数
输入样例 1
无
输出样例 1
55(样例)
提示:例如:三个三位数192,384,576满足以上条件, 是一组
知识点:数组,循环,数的拆分
思路:开一个数组,用数组下标对应的值代表该数使用的次数,假定三个数中最小的数可得另两个数;遍历最小数,数组下标1-9的值都为1为有效的一组
AC代码:
#include<bits/stdc++.h> //万能头文件
using namespace std;
int a[10]={0,0,0,0,0,0,0,0,0,0};
void fun(int n){ //分解一个数的每位数,数组对应下标值增加加
while(n){
int i=n%10;
a[i]++;
n/=10;
}
}
bool fun1(){ //判断数组下标1-9的值是否都为1(判断0-9是否都用了一次)
for(int i=1;i<=9;i++){
if(a[i]!=1) return false;
}
return true;
}
int main(){
int s=0; //组数
for(int i=101;i<=333;i++){ //遍历最小数
memset(a, 0, sizeof a); //清空数组
int j=2*i,k=3*i;
fun(i),fun(j),fun(k);
if(fun1()) s++;
}
cout<<s;
return 0;
}