a-b=c で、a,b,c共に1~9の数字を一つずつ使うという虫喰い算。
よーし。じゃぁまたプログラムかいちゃおかな~。
前よりはエレガントだよねっ
#include "stdafx.h"
#include "math.h"
bool check(int i)
{
int j[10],k,l,tmp;
j[0]=0;
for(k=1;k<10;k++){
tmp=0;
for(l=0;l<k;l++) tmp+= j[l]*(int)pow(10.0,9.0-l);
j[k] = (i-tmp)/(int)pow(10.0,9.0-k);
if(j[k]==0) return(false);
}
for(k=1;k<9;k++){
for(l=k+1;l<10;l++){
if(j[k]==j[l]) return(false);
}
}
return(true);
}
int _tmain(int argc, _TCHAR* argv[])
{
int i,j,k;
for(i=123456789;i<=987654321;i++){
if(!check(i)) continue;
for(j=123456789;j<=987654321;j++){
if(i<j) continue;
if(!check(j)) continue;
k=i-j;
if(check(k)) printf("(%ld - %ld) = %ld \n",i,j,k);
}
}
return 0;
}
えっと。何時になったら計算終わりますか?