第五章5.1
PAT A1069数字黑洞
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
bool cmp(int a , int b){
return a > b;
}
void to_array(int n , int num[]) {
for(int i = 0 ; i< 4;i++){
num[i] = n % 10;
n /= 10;
}
}
int to_number(int num[]){
int sum =0;
for(int i = 0; i <4;i++){
sum = sum * 10+num[i];
}
return sum;
}
int main(){
int n,MIN,MAX;
scanf("%d" ,&n);
int num[5];
while(1){
//那么对于0的时候咋整?,这里使用字符串来整了!
to_array(n, num);
sort(num , num + 4);
MIN = to_number(num);
sort(num , num + 4, cmp);
MAX = to_number(num);
n = MAX - MIN;
printf("%04d - %04d = %04dn" , MAX,MIN,n);
if(n == 0 || n == 6174) break;
}
return 0;
}
(不过这里我对于to_number(int num[]){)还是有些疑惑,这不是会把数字转过来???
5.2 最大公约数与最小公约数
最大公约数与最小公约数
//求解最大公约数
int gcd(int a , int b){
if(b == 0) return a;
else return gcd(b, a%b);
}
//求最小公约数
int lcm(int a,int b){
int d = gcd(a,b);
return (a / d * b);
}