初级启示者
5065 神秘咒语经验值:0
题目描述 Description
在数字的世界有一个神秘的咒语叫做6174。
一个任意的四位正整数.将数字重新组合成一个最大的数和最小的数相减,重复这个过程,最多七步,必得6174.即:7641-1467=6174.将永远出不来.
输入任意一个四位数数字(全相同的除外),输出变成神秘咒语的步数.
输入描述 Input Description
输入一个四位数
输出描述 Output Description
输出一个数字,表示变成神秘咒语的步数.
样例输入 Sample Input
4325
样例输出 Sample Output
3
#include <iostream>
#include <cmath>
using namespace std;
int n;
int main(){
int a,b,c,d;
cin>>n;
for(int i=1;i<=7;i++){
a=n/1000;
b=n%1000/100;
c=n%100/10;
d=n%10;
}
return 0;
}
半代码,排序求思路
董宇昊在2020-08-18 14:24:17追加了内容
#include<iostream>
#include<cstdio>
#include<cstring>
#include<iomanip>
#include<string>
#include<cmath>
#include<algorithm>
using namespace std;
int n,cnt;
int main(){
int a[5];
cin>>n;
for(int i=1;i<=7;i++){
a[1]=n/1000;
a[2]=n%1000/100;
a[3]=n%100/10;
a[4]=n%10;
sort(a+1,a+5);
n=(a[1]*1000+a[2]*100+a[3]*10+a[4])-(a[4]*1000+a[3]*100+a[2]*10+a[1]);
cnt++;
if(n==6174) break;
}
cout<<cnt;
return 0;
}
改了一下,还是不对
资深光能
定义两个数组;
while(n!=6174){
a数组=n的各个位数
b数组=n的各个位数
sort(a从大到小排)
sort(b从小到大排)
定义两个变量分别按顺序存a,b数组中的值 (范例:p = a[1] * 1000 + a[2] * 100 + a[3] * 10 + a[4];)
n=两个变量的差
计数器++
}
输出
初级光能
函数
- a[1]=;
- a[2]=;
- a[3]=;
- a[4]=;
- sort(a+1,a+1+4);
- n=a[]*1000+a[]*100+a[]*10+a[]-a[]*1000-a[]*100-a[]*10-a[];//自己想
主函数
- while(n!=6174){
- judge();
- cnt++;
- }
高级天翼
sort(a+1,a+4+1,cmp);
maxn=a[1]*1000+a[2]*100+a[3]*10+a[4];
sort(a+1,a+4+1);
minn=a[1]*1000+a[2]*100+a[3]*10+a[4];
ans=maxn-minn;
核心,剩下的自己想
张恩泽在2020-08-18 16:11:31追加了内容
望采纳
新手天翼
#include<iostream>
#include<algorithm>
using namespace std;
int a[5];
int judge(int n){
a[1]=n%10;
a[2]=n/10%10;
a[3]=n/100%10;
a[4]=n/1000%10;
sort(a+1,a+1+4);
n=a[4]*1000+a[3]*100+a[2]*10+a[1]-a[1]*1000-a[2]*100-a[3]*10-a[4];
return n;
}
int main(){
int s,cnt=0;
cin>>s;
while(s!=6174){
cnt++;
s=judge(s);
}
cout<<cnt;
return 0;
}