1069 The Black Hole of Numbers
Posted CSU迦叶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1069 The Black Hole of Numbers相关的知识,希望对你有一定的参考价值。
注意两点:
1. 不足4位要补足,不仅仅是一开始要考虑,每次得到一个差值,都要考虑
2. 到0也会停下,不仅仅是一开始可能发生,也可能是过程中的某一个差值
另:
vector<int> 是可以作为函数的参数的。
AC代码
#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<bits/stdc++.h>
#include<stdlib.h>
#include<time.h>
#include<vector>
#include<set>
#include<string>
#include<queue>
#include<map>
using namespace std;
typedef long long LL;
const int maxn = 50007;
const int MOD = 1000000007;
const int INF = 1000000000;//INF:下确界
const LL SUP = (1LL<<63)-1;//SUP:上确界
const double eps = 1e-5;
int getNum(vector<int> vi){
int ans = 0;
for(int i=vi.size()-1;i>=0;i--){
ans = ans*10+vi[i];
}
return ans;
}
int main(){
string s;
vector<int> vi;
cin>>s;
while(s.length()!=4){//不足4位补零
s+="0";
}
for(int i=0;i<s.length();i++){
vi.push_back(s[i]-'0');
}
sort(vi.begin(),vi.end());
int big = getNum(vi);
reverse(vi.begin(),vi.end());
int small = getNum(vi);
int sub = big - small;
while(sub!=6174&&sub!=0){
printf("%04d - %04d = %04d\\n",big,small,sub);
vi.clear();
while(sub){
vi.push_back(sub%10);
sub /= 10;
}
while(vi.size()!=4){//不足4位补零
vi.push_back(0);
}
sort(vi.begin(),vi.end());
big = getNum(vi);
reverse(vi.begin(),vi.end());
small = getNum(vi);
sub = big - small;
}
printf("%04d - %04d = %04d\\n",big,small,sub);
return 0;
}
以上是关于1069 The Black Hole of Numbers的主要内容,如果未能解决你的问题,请参考以下文章