用户:
寂寞de奶酪查看:10 回复:5 评论:10 创建时间:2023-07-30T16:51:09
题目描述
任意一个四位正整数(4位数字相同者除外), 将各位数字组成一个最大数和最小数,两数相减并重复这一过程必得6174。
输入格式输入一个四位正整数。
输出格式输出文件包含多行, 组成一个最大数和一个最小数就输出一行,直道结果为6174。
样例 输入数据 14123
输出数据 1
4321-1234=3087
8730-378=8352
8532-2358=6174
小Yiiiiic++代码
#include<bits/stdc++.h>
using namespace std;
int a[4],d,e,f,g;
char c[4];
void bub(){
for(int i=0;i<4;i++){
for(int j=0;j<4-i;j++){
if(a[j]<a[j+1]){
swap(a[j],a[j+1]);
}
}
}
}
int main(){
cin>>c;
for(int i=0;i<4;i++){
a[i]=c[i]-'0';
}
while(g!=6174){
d=e=0;
bub();
for(int i=0;i<4;i++){
d=d*10+a[i];
e=e*10+a[4-1-i];
}
f=d-e;
g=f;
cout<<d<<"-"<<e<<"="<<f<<endl;
for(int i=0;i<4;i++){
a[i]=f%10;
f/=10;
}
}
return 0;
}
点赞0
评论
醉醉白凰#include<bits/stdc++.h>
using namespace std;
int main(){
char a[10];
int n=0,m=0,ans=0,t=0;
for(int i=1;i<=4;i++){
cin>>a[i];
}
while(ans!=6174){
//while(t!=5){
m=0;n=0;
for(int i=1;i<=4;i++){
for(int j=i;j<=4;j++){
if(a[i]-'0'<a[j]-'0'){
swap(a[i],a[j]);
}
}
}
/*
for(int i=1;i<=4;i++){
cout<<a[i];
}
cout<<endl;*/
n+=(a[1]-'0')*1000;
n+=(a[2]-'0')*100;
n+=(a[3]-'0')*10;
n+=(a[4]-'0');
//cout<<n<<endl;
for(int i=1;i<=4;i++){
for(int j=i;j<=4;j++){
if(a[i]-'0'>a[j]-'0'){
swap(a[i],a[j]);
}
}
}
/*
for(int i=1;i<=4;i++){
cout<<a[i];
}
cout<<endl;*/
m+=(a[1]-'0')*1000;
m+=(a[2]-'0')*100;
m+=(a[3]-'0')*10;
m+=(a[4]-'0');
//cout<<m<<endl;
cout<<n<<"-"<<m<<"="<<n-m<<endl;
ans=n-m;
a[1]=ans/1000+'0';
a[2]=ans/100%10+'0';
a[3]=ans/10%10+'0';
a[4]=ans%10+'0';
/*
for(int i=1;i<=4;i++){
cout<<a[i];
}
cout<<endl;*/
//cout<<ans<<endl;
//t++;
}
}
看到这n个调试痕迹你就知道我调了多久了(悲
试了几个数都是对的芜湖起飞
点赞0
评论