问题是:有一条8位数字的票。第一张票的编号为 M ,最后一张为 N 。量级 M 和 N 满足以下关系:10000000 ≤ M < N ≤ 99999999。您需要确定给定数字之间的“幸运”票数。如果前四位数字的总和等于后四位数字的总和,则彩票被视为“幸运”。这是我的代码:
#include <iostream>
#include <fstream>
#include <iomanip>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
int calcSumDigits(int n)
{
int sum=0;
while (n!=0)
{
sum+=n%10;
n/=10;
}
return sum;
}
int main(void)
{
int a,b,cnt=0,x,y;
cin>>a>>b;
for (int i=a;i<=b;i++)
{
x=i%10000;
y=(i-x)/10000;
if (calcSumDigits(x)==calcSumDigits(y)) cnt++;
}
cout<<cnt;
return 0;
}
结果是正确的,但是程序需要很长时间才能给出结果。例如,当我尝试从 10000000 到 99999999 时,结果显示 4379055 但需要超过 6 秒