参照大佬写法:
#include<iostream>
#include<cstring>
using namespace std;
int main(){string str;getline(cin,str);//可以将带有空格的string输入for(int i=0;i<str.size();i++){if(i==0&&str[i]>='a'&&str[i]<='z') str[i]-=32;//单词首字母小写变大写if(str[i]==' '){int j=i+1;while(str[j]==' '){ //去除多个空格,只保留一个空格str.erase(str.begin()+j);}if(str[j]>='a'&&str[j]<='z') str[j]-=32;//判断空格后是否是小写,小写变大写}if((str[i]-'0')>=0&&(str[i]-'0')<=9&&str[i+1]>='a'&&str[i+1]<='z') str.insert(i+1,"_");//数字在单词前面if((str[i]-'0')>=0&&(str[i]-'0')<=9&&((str[i-1]>='a'&&str[i-1]<='z')||(str[i-1]>='A'&&str[i-1]<='Z'))) str.insert(i,"_");//数字在单词后面(注意大写单词后面接数字的情况)}cout<<str<<endl;return 0;
}
幸运数字
关键在于进制转化
#include <iostream>
using namespace std;
int Njz(int N,int a)//把十进制数N转换成a进制字符串
{int sum=0;while(N){sum+=N%a;//逆序存放N/=a;}return sum;
}
int main()
{int i,N,sum;for(i=1,N=0;N<2023;i++){if(i%Njz(i,2)==0&&i%Njz(i,8)==0&&i%Njz(i,10)==0&&i%Njz(i,16)==0) {N++;sum=i;}}cout<<sum;return 0;
}