孤独的7 虫蚀算-穷举法

   

#include <iostream>
using namespace std;

int main()
{
	int Result;
	int iSix;
	int iFive;
	int iFour;
	int iThree;
	int iTwo;

	for (int i = 1, iDivisor = 100; iDivisor != 1000; ++iDivisor)
	{
		for (int iDividend = 10000000; iDividend != 100000000; ++iDividend)
		{
			//1.如果能够整除,继续
			if (iDividend%iDivisor == 0)
			{
				Result = iDividend / iDivisor;

				//2.如果得到的商的结果是5位数,并且高二位为7,并且低二位为0
				if (Result > 16999 && Result < 98000 && (Result / 1000) % 10 == 7 && (Result/10)%10==0)
				{
					//3.如果最高位乘以3位数,是一个四位数,并且除数最高4位减去这个四位数,结果大于9小于100
					iSix = (Result / 10000) * iDivisor;
					iFive = iDividend / 10000 - iSix;
					if (iSix>999 && iSix<10000 && iFive>9 && iFive < 100)
					{
						//4.如果被除数乘以7是三位数,且减去新的三位数,还是三位数
						iFour = (iFive * 10 + (iDividend / 1000) % 10) - iDivisor * 7;
						if (iDivisor * 7<1000 && iFour > 99 && iFour < 1000)
						{
							//5.7后面的一位,如果第三位数乘以被除数还是三位数,且iFour形成的四位数减去这个三位数是两位数
						    //iThree是低三位乘以被除数,应该是一个三位数
							//iTwo是iFour形成的四位数减去上面的三位数,得到的一个两位数,这个两位数和低二位形成的3位数必须要小于被除数
							iThree = ((Result / 100) % 10)*iDivisor;
							iTwo = iFour * 10 + (iDividend / 100) % 10 - iThree;
							if (iThree>99 && iThree<1000 && iTwo>9 && iTwo < 100)
							{
								//6.得到的两位数,和低二位的数字组合,该数字要小于被除数
								if ((iTwo * 10 + (iDividend / 10) % 10) < iDivisor)
									cout << i++ << " " << iDividend << " / " << iDivisor << " = " << Result << endl;
							}
						}
					}
				}
			}
		}
	}

	system("pause");

	return 0;
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值