70,006
社区成员




#include <stdio.h>
#define LENGTH 8
#define MIN 1234
#define MAX 8765
int main()
{
int flag;
int flag2;
int index,index2;
int arr[LENGTH];
int a,b;
for(a=MIN;a<=MAX/4;++a)
{
flag=1;
arr[3]=a%10;
arr[2]=(a/10)%10;
arr[1]=(a/100)%10;
arr[0]=(a/1000)%10;
b=a*4;
arr[7]=b%10;
arr[6]=(b/10)%10;
arr[5]=(b/100)%10;
arr[4]=(b/1000)%10;
for(index=1;index<=8;++index)
{
flag2=0;
for(index2=0;index2!=LENGTH;++index2)
{
if(arr[index2]==index)//find the nunber
{
flag2=1;
break;
}
}
if(flag2==0)//not found finally
{
flag=0;
break;
}
}//loop for validating every bit
if(flag==1)
{
printf("%d*4=%d\n",a,b);
}
}//loop for every number
return 0;
}
成功毕业 int a[] = {1,2,3,4,5,6,7,8};
do{
int num1 = a[0]*1000+a[1]*100+a[2]*10+a[3];
int num2 = a[4]*1000+a[5]*100+a[6]*10+a[7];
if (num1 == num2 * 4)
cout<<num1<<"=4*"<<num2<<endl;
}while (next_permutation(a, a+8));
++#include <stdio.h>
int check(int n1, int n2);
int main(void)
{
int n1, n2;
for (n1 = 1234; n1 <= 2187; ++n1) {
n2 = n1 << 2;
if (check(n1, n2)) {
printf("%d = %d * 4\n", n2, n1);
}
}
return 0;
}
int check(int n1, int n2)
{
int i, res;
res = 0;
for (i = 0; i < 4; ++i) {
res |= (1 << (n1%10 - 1));
n1 /= 10;
}
for (i = 0; i < 4; ++i) {
res |= (1 << (n2%10 - 1));
n2 /= 10;
}
return res == 0xFF;
}
运行结果:
5472 = 1368 * 4
7452 = 1863 * 4
#include "stdafx.h"
#include <Windows.h>
#include<iostream>
using namespace std;
int genNum(int bit1, int bit2, int bit3, int bit4)
{
return (bit1*1000 + bit2*100 + bit3*10 + bit4);
}
bool isNumValid(int num)
{
if (num > 8765)
return false;
BYTE bits[4];
char str[5] = "";
sprintf(str, "%d", num);
for(int i=0; i<4; i++) {
bits[i] = str[i] - '0';
if (bits[i] == 0 || bits[i] == 9)
return false;
}
for(int i=0; i<3; i++) {
for(int j=i+1; j<4; j++) {
if (bits[i] == bits[j])
return false;
}
}
return true;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a, b;
int a_bit1, a_bit2, a_bit3, a_bit4;
int b_bit1, b_bit2, b_bit3, b_bit4;
char strOut[50] = "";
for(a_bit1=1; a_bit1<=8; a_bit1++) {
for(a_bit2=1; a_bit2<=8; a_bit2++) {
if (a_bit2 == a_bit1)
continue;
for(a_bit3=1; a_bit3<=8; a_bit3++) {
if (a_bit3 == a_bit2 || a_bit3 == a_bit1)
continue;
for(a_bit4=1; a_bit4<=8; a_bit4++) {
if (a_bit4 == a_bit3 || a_bit4 == a_bit2 || a_bit4 == a_bit1)
continue;
// 至此,生成了各位数字各不相同的数字a
a = genNum(a_bit1, a_bit2, a_bit3, a_bit4);
b = a << 2;
if (isNumValid(b)) {
cout<<"a="<<a<<",\tb="<<b<<endl;
sprintf(strOut, "a=%d,\tb=%d\n", a, b);
OutputDebugStringA(strOut);
}
}
}
}
}
cout<<"完毕!"<<endl;
return 0;
}
运行结果:
a=1283, b=5132
a=1284, b=5136
a=1287, b=5148
a=1328, b=5312
a=1342, b=5368
a=1346, b=5384
a=1354, b=5416
a=1357, b=5428
a=1358, b=5432
a=1367, b=5468
a=1368, b=5472
a=1428, b=5712
a=1432, b=5728
a=1437, b=5748
a=1453, b=5812
a=1456, b=5824
a=1458, b=5832
a=1468, b=5872
a=1532, b=6128
a=1537, b=6148
a=1538, b=6152
a=1543, b=6172
a=1546, b=6184
a=1562, b=6248
a=1578, b=6312
a=1582, b=6328
a=1587, b=6348
a=1628, b=6512
a=1632, b=6528
a=1637, b=6548
a=1643, b=6572
a=1678, b=6712
a=1682, b=6728
a=1683, b=6732
a=1687, b=6748
a=1782, b=7128
a=1783, b=7132
a=1784, b=7136
a=1832, b=7328
a=1837, b=7348
a=1842, b=7368
a=1846, b=7384
a=1853, b=7412
a=1854, b=7416
a=1857, b=7428
a=1863, b=7452
a=1864, b=7456
a=1867, b=7468
a=2134, b=8536
a=2143, b=8572
a=2153, b=8612
a=2156, b=8624
a=2158, b=8632
a=2163, b=8652
a=2168, b=8672
a=2178, b=8712
a=2183, b=8732
a=2184, b=8736