题解 P1898 【缘分计算】

Enterpr1se

2020-10-08 11:50:56

Solution

# ~~这可能是全谷实用价值最高的一道题~~ 好了,这题本身很基础,基本没有难度,全部模拟,数据规模也不大。(简单到蒟蒻楼主基本没有调试就AC了。) 本来计划用循环做,但是后来发现这东西**代码极长**,**难以调试**,于是毅然转向了另一种做法: ## 递 归 做法非常基础,比搜索什么的简单多了: ```cpp //lg-1889 #include<iostream> #include<string> using namespace std; short st,l; string name,num,ans; string strint(short a){//将int转化为string string ret; char dig; while(a!=0){ dig=(a%10)+48; ret=dig+ret; a/=10; } return ret; } string sht(string a){//shorten的缩写,但是看着有点奇怪(大雾 if(a.length()==2 || a=="100") return a;//若得出两位或100则直接返回 short len=a.length(); string ret; for(int i=0;i<len-1;++i){ ret+=((a[i]+a[i+1]-96)%10)+48;//第i位数字形式+第(i+1)位数字形式的和模10,转换为字符 } return sht(ret);//递归 } int main(){ ios::sync_with_stdio(false);//输入加速の黑科技 cin>>name>>st; l=name.length(); for(int i=0;i<l;++i) num+=strint(st+name[i]-65); ans=sht(num); if(ans[0]=='0') cout<<ans[1];//判断是否有前置0 else cout<<ans; return 0; } ``` 好了,快输入你和那个TA的名字,来测测你们的缘分吧! ~~幸福都是你们的(猛男哭泣~~ ~~另:如果测出你和你兄弟有什么奇♂妙的缘分,本人概不负责~~