请大佬帮忙看看哪里错了(菜鸟提问)

//把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包 含数字 2 和 4,
//一共有多少种不同的分解方法? 注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和 1001+1000+18 被视为同一种。
#include<stdio.h>
#include<stdlib.h>
int fun()
{
	int a,b,c,n=0;
	for(int a=0;a<2019;a++)
	{
		if(a/1000==2||a/100%10==2||a/10%10==2||a==2||a/1000==4||a/100%10==4||a/10%10==4||a==4)
			break;
		for(int b=0;b<2019;b++)
		{
			if(b/1000==2||b/100%10==2||b/10%10==2||b==2||b/1000==4||b/100%10==4||b/10%10==4||b==4)
				break;
			for(int c=0;c<2019;c++)
			{
				if(c/1000==2||c/100%10==2||c/10%10==2||c==2||c/1000==4||c/100%10==4||c/10%10==4||c==4)
					break;
				while(a+b+c==2019&&a!=b&&a!=c&&b!=c)
					n++;			
			}
		}
	}
	return n;
}
void main()
{
	
	int a=fun();
	printf("%d",a/6);
	system("pause");
}

全部评论
为啥不假定一下a<b<c呢
1 回复
分享
发布于 2019-11-22 22:33
,,,,,吐槽的地方有点多,,不是用break而是用continue把,还有,你用while会死循环吧,用if就行,还有,你最后的结果是除于6我知道你的意思,但感觉会有点问题,可以每一次结果排序后连接成字符串,用个set来去重
1 回复
分享
发布于 2019-11-23 15:29
联想
校招火热招聘中
官网直投

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务