当前位置:网站首页>[exercise-6] (UVA 725) division = = violence

[exercise-6] (UVA 725) division = = violence

2022-07-06 15:56:00 Flame car

translate :

Enter a positive integer n, Output all shapes from small to large, such as abcde/fghij=n The expression of , among a~j Exactly a number 0 ~9 An arrangement of ( There can be leads 0),2≤n≤79

This question is not difficult , I think it's interesting , So write casually .

AC Code :

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5+5;
const ll mod = 1e9+7;
int num[20];
bool solve(int x1,int x2){
    
	memset(num,0,sizeof num);
	if(x2>98765)	
		return 0;
	for(int i=0;i<5;i++)// Count 
		num[x1%10]++,num[x2%10]++,x1/=10,x2/=10;
	for(int i=0;i<=9;i++)// Judge whether it is a 0~9 An arrangement of 
		if(num[i]!=1)
			return 0;
	return 1;
}
int main()
{
    
	int n,cnt=0;
	while(cin>>n && n)
	{
    
		int flag = 1;
		for(int i=1234;i<=98765;i++)
		{
    
			if(solve(i,i*n))
			{
    
				flag = 0;
				printf("%05d / %05d = %d\n",n*i,i,n);
			}
		}
		if(flag)
			printf("There are no solutions for %d.\n",n);
		cout<<endl;
	}
}

So why is it written like this ? First, let's write the formula in this form A / B = C, Then it can be simplified into ,A = B * C. and C We know this time , As long as we enumerate B That is, the denominator , Also can put the A Show it .
So the idea is very clear , enumeration B( One ), And then use B Multiply what you already know C, obtain A( Two ). Judge A and B Is it right? 0~9 Just sort all the numbers !
The judgment is simple. Just make a cycle , And we know B * C That is to say A It can't be greater than 98765 Of , This can also be used as a termination condition .

原网站

版权声明
本文为[Flame car]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060919552383.html