60分飘过,感觉没问题,求大佬帮忙
查看原帖
60分飘过,感觉没问题,求大佬帮忙
305205
小lagi楼主2020/1/4 20:14
#include<stdio.h>
int ischong(int n1,int n2,int n3)
{
	int a[3],b[3],c[3];//分别存储第一二三个数值
	int i=2,j=2,k=2,flag1=0,flag2=0,flag3=0,flag4=0;
	while(n1>0||n2>0||n3>0)//对应到各个数组中
	{
		a[i--]=n1%10;
		b[j--]=n2%10;
		c[k--]=n3%10;
		n1/=10;
		n2/=10;
		n3/=10;
	}
	for(i=0;i<=2;i++)//排除掉存在0的情况
		if(a[i]==0||b[i]==0||c[i]==0)
		{
			flag4=1;
			break;
		}
	if(flag4==0)//在数组中没有0的情况下继续走
	{
	for(i=0;i<=2;i++)
		{
		for(j=0;j<=2;j++)
			{
			for(k=0;k<=2;k++)//判断是否有相同值
				if(a[i]==b[j]||a[i]==c[k]||b[j]==c[k])
				{
					flag1=1;
					break;
				}
			if(flag1==1)
			{
				flag2=1;
				break;
			}
			}
		if(flag2==1)//实现逐步跳出循环
			break;
		}
	}
	if(a[0]<b[0]&&b[0]<c[0])//第一个数从小到大排
		flag2=0;
	else
		flag2=1;
	if(flag2||flag1||flag4)//只要任意一种不符合
		return 0;
	else
		return 1;
}
int weishu(int m,int n)//判断数值位数不能超过三
{
	int p=0,q=0;
	while(m>0)
	{
		p++;
		m/=10;
	}
	while(n>0)
	{
		q++;
		n/=10;
	}
	if(p==3&&q==3)
		return 1;
	else
		return 0;
}
int main()
{
	int i,j,k,n,m,q,p,flag1=0;
	scanf("%d%d%d",&m,&q,&p);
	for(i=1;i<=9;i++)
		for(j=1;j<=9;j++)
				for(k=1;k<=9;k++)
					if(i!=j&&j!=k&&i!=k)
					{
						n=i*100+j*10+k;
						if(weishu(n/m*q,n/m*p))
						{
						if(ischong(n,n/m*q,n/m*p))//倍数求各值
							{
							flag1=1;
							printf("%d %d %d\n",n,n/m*q,n/m*p); 
							}
						}
					} 
	if(flag1==0)
		printf("No!!!");
	return 0;
}```
2020/1/4 20:14
加载中...