这是一道小学奥数题,看到这一题后如果只给我笔和纸,我真的无从下手,不知怎么去把这些方框填出来。但借助编程,这道题就非常简单了。直接送上代码。
C++程序代码
#include
using namespace std;
int allDifferent(int a[],int size);
int main()
{
int a[9];
for(int k=1;k<=8;k++)
{
for(int i=1234;i<9876>
{
for(int j=1;j<=9;j++)
{
if(i%j==k)
{
if(i/j>=100&&i/j<=999)
{
a[0]=i/1000;
a[1]=i/100%10;
a[2]=i%100/10;
a[3]=i%10;
a[4]=j;
a[5]=i/j/100;
a[6]=i/j/10%10;
a[7]=i/j%10;
a[8]=k;
if(allDifferent(a,9))
cout<
}
}
}
}
}
return 0;
}
int allDifferent(int a[],int size)
{
int flag=1;
for(int i=0;i
{
for(int j=i+1;j
{
if(a[i]==a[j]||a[i]==0)
{
flag=0;
break;
}
}
}
return flag;
}
结果输出:
2584 / 7 = 369…1
4852 / 7 = 693…1
5923 / 7 = 846…1
7435 / 9 = 826…1
1847 / 5 = 369…2
4817 / 5 = 963…2
4126 / 7 = 589…3
5781 / 9 = 642…3
3178 / 6 = 529…4
1973 / 8 = 246…5
2896 / 7 = 413…5
2917 / 8 = 364…5
2941 / 8 = 367…5
4973 / 8 = 621…5
6341 / 8 = 792…5
7413 / 8 = 926…5
7461 / 8 = 932…5
7431 / 9 = 825…6
7512 / 9 = 834…6
3752 / 9 = 416…8
6425 / 9 = 713…8
怎么样?所有数字都不重复,完全符合题目要求。是不是很便捷?所以, 你对编程是不是也充满了兴趣?
關鍵字: 奥数 allDifferent 解法