数学中的123就跟英语中的ABC一样平凡和简单。然而,按以下运算顺序,就可以观察到这个最简单的数字。
黑洞的值:
设定一个任意数字串,数出这个数中的偶数个数,奇数个数,及这个数中所包含的所有位数的总数。
例如:1234567890
1.偶:数出该数数字中的偶数个数,在本例中为2,4,6,8,0,总共有 5 个。
2.奇:数出该数数字中的奇数个数,在本例中为1,3,5,7,9,总共有 5 个。
3.总:数出该数数字的总个数,本例中为 10 个。
4.新数:将答案按 “偶-奇-总” 的位序,排出得到新数为:5510。
5.重复:将新数5510按以上算法重复运算,可得到新数:134。
6.重复:将新数134按以上算法重复运算,可得到新数:123。
求输入一个数字串,输出其中所有可能得到的新数直到123。 我的代码:
#include <bits/stdc++.h>
using namespace std;
const int MAXN=1e6+5,MAXB=2e7;
#define ll long long
int hd123(string s){
if(s=="123")
return 0;
int j=0,o=0,z;
z=s.size();
for(int i=0;i<s.size();i++){
if(int(s[i]-'0')%2==1)
j++;
else
o++;
}
string ss="";
while(z>0){
ss=char((z%10)+'0')+ss;
z/=10;
}if(j==0)
ss+='0';
while(j>0){
ss=char((j%10)+'0')+ss;
j/=10;
}
if(o==0)
ss+='0';
while(o>0){
ss=char((o%10)+'0')+ss;
o/=10;
}
cout<<ss<<endl;
hd123(ss);
return 0;
}
int main() {
string s;
cin>>s;
hd123(s);
return 0;
}