![]() |
#2
shn5212010-06-27 15:00
#include <iostream.h>
#include <string.h> #define MIN 100000 #define MAX 166667 int num=0; /* *函数名:sortNums *功能:对nums数组进行冒泡法排序,返回结果 */ void sortNums(int *nums) { int temp,i,j; for(i=0;i<6;i++) { for(j=i+1;j<6;j++) { if(nums[i]>nums[j]) { temp=nums[i]; nums[i]=nums[j]; nums[j]=temp; } } } } /* *函数名:checknum *功能:检查乘2,3,4,5,6后得到的积是否由原数的6个数字组成的 * mxi=temp*(2,3,4,5,6) *返回值:-1 不相同 0 相同 */ int checknum(int temp,int mxi) { int find,bv,j; int num1[6],num2[6]; find=0; j=0; while(temp>0) { bv=temp%10; num1[j]=bv; temp=temp/10; j=j+1; } j=0; while(mxi>0) { bv=mxi%10; num2[j]=bv; mxi=mxi/10; j=j+1; } sortNums(num1); sortNums(num2); /* 按位比较数字是否相等 */ for(j=0;j<6;j++) { if(num1[j]!=num2[j]) { find=-1; break; } } return find; } void output(int i) { cout<<"the number is "<<i<<endl; } void getnum() { int i,mxi; cout<<"begin find number,start "<<MIN<<endl; for(i=MIN;i<MAX;i++) { mxi=i*2; if(checknum(i,mxi)<0) continue; mxi=i*3; if(checknum(i,mxi)<0) continue; mxi=i*4; if(checknum(i,mxi)<0) continue; mxi=i*5; if(checknum(i,mxi)<0) continue; mxi=i*6; if(checknum(i,mxi)<0) continue; output(i); } cout<<"end find number,end "<<MAX<<endl; } int main() { int flag=0; getnum(); return 0; } |
#include <iostream.h>
#include <string.h>
#define MIN 100000
#define MAX 166667
class Number{
private:
int num;
public:
Number();
void getnum();
void sortNums(int nums[]);
int checknum(int i,int temp);
void output(int i);
};
Number::Number(){
num=0;
}
/*
*函数名:sortNums
*功能:对nums数组进行冒泡法排序,返回结果
*/
void Number::sortNums(int *nums){
int temp,i,j;
for(i=0;i<6;i++){
for(j=i+1;j<6;j++){
if(nums[i]>nums[j]){
temp=nums[i];
nums[i]=nums[j];
nums[j]=temp;
}
}
}
}
/*
*函数名:checknum
*功能:检查乘2,3,4,5,6后得到的积是否由原数的6个数字组成的
* mxi=temp*(2,3,4,5,6)
*返回值:-1 不相同 0 相同
*/
int Number::checknum(int temp,int mxi){
int find,bv,j;
int num1[6],num2[6];
find=0;
j=0;
while(temp>0){
bv=temp%10;
num1[j]=bv;
temp=temp/10;
j=j+1;
}
j=0;
while(mxi>0){
bv=mxi%10;
num2[j]=bv;
mxi=mxi/10;
j=j+1;
}
sortNums(num1);
sortNums(num2);
/*
按位比较数字是否相等
*/
for(j=0;j<6;j++){
if(num1[j]!=num2[j])
{
find=-1;
break;
}
}
return find;
}
void Number::output(int i){
cout<<"the number is "<<i<<endl;
}
void Number::getnum(){
int i,mxi;
cout<<"begin find number,start "<<MIN<<endl;
for(i=MIN;i<MAX;i++){
mxi=i*2;
if(checknum(i,mxi)<0) continue;
mxi=i*3;
if(checknum(i,mxi)<0) continue;
mxi=i*4;
if(checknum(i,mxi)<0) continue;
mxi=i*5;
if(checknum(i,mxi)<0) continue;
mxi=i*6;
if(checknum(i,mxi)<0) continue;
output(i);
}
cout<<"end find number,end "<<MAX<<endl;
}
int main()
{
int flag=0;
Number number;
number.getnum();
return 0;
}