PAT-A1069麻惶,題目地址:https://www.patest.cn/contests/pat-a-practise/1069
這道題比較簡(jiǎn)單铃在,只要把整個(gè)過程都模擬出來就可以了医男。值得注意的點(diǎn):
- 最后的輸出要求必須是4位數(shù)格式,不足的前面補(bǔ)0.
- 對(duì)于輸入本身<1000的要想想代碼考慮到了沒有
- 輸入6174算是一個(gè)特例蚀瘸,有一個(gè)case的輸入就是6174
代碼如下:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string.h>
using namespace std;
int get_seq(int num, int order){ //order=1返回最小值桐款,=0返回最大值
int a[4], count = 0, res = 0;
memset(a, 0, sizeof(int) * 4); //數(shù)組默認(rèn)初始化為0鲤妥, 這樣如果輸入<1000,就相當(dāng)于自動(dòng)補(bǔ)0了
while(num != 0){
a[count] = num % 10;
num /= 10;
count++;
}
sort(a, a+4);
if(order){
for(int i = 0; i <= 3; i++){
res = res * 10 + a[i];
}
}
else{
for(int i = 3; i >= 0; i--){
res = res * 10 + a[i];
}
}
return res;
}
int main(){
int num;
cin >> num;
bool flag = false;
//此處其實(shí)用do...while循環(huán)是最好的拱雏,連flag變量都省了
while((num != 6174 || !flag)&& num != 0){
int max = get_seq(num, 0);
int min = get_seq(num, 1);
num = max - min;
printf("%04d - %04d = %04d\n", max, min, num); //注意格式化輸出的格式
flag = true;
}
return 0;
}