這是一道小學奧數題,看到這一題後如果只給我筆和紙,我真的無從下手,不知怎麼去把這些方框填出來。但藉助編程,這道題就非常簡單了。直接送上代碼。
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 解法