寻找规律 题解

描述

寻找规律数字:将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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值