高级光能
题目描述 Description
大家都知道,斐波那契数列是从第2项开始,每一项都等于前两项之和。以此,我们定义循环斐波那契字符串:给定一个字符串,将原字符串的第一个字符的ASCII值加上第二个字符的ASCII值,得到循环斐波那契字符串的首个字符;将原字符串的第二个字符的ASCII值加上第三个字符的ASCII值,得到斐波那契字符串的第二个字符……以此类推,直到原字符串的倒数第二个字符。将原字符串的最后一个字符的ASCII值加上第一个字符的ASCII值,得到循环斐波那契字符串的最后一个字符。
输入描述 Input Description
输入为一行,包含一行字符串(长度在2~100之间)。且每个字符的ASCII值不大于63。
输出描述 Output Description
输出为一行,为变换后的循环斐波那契字符串。
样例输入 Sample Input
01234
样例输出 Sample Output
acegd
求思路,核心!
初级天翼
你好,循环内部是这样的:
输入的是s,定义一个空串s1,存放最后的结果
思路:
如果是<size()-1的,正常算,因为题目说了将原字符串的第一个字符的ASCII值加上第二个字符的ASCII值,得到循环斐波那契字符串的首个字符,意思就是,这个字符的ASCII码加上下一个ASCII码值,就是s1[i] = s[i] + s[i+1](进行此运算时自动转为ASCII码,后面再次转回),但题目也说了直到原字符串的倒数第二个字符。将原字符串的最后一个字符的ASCII值加上第一个字符的ASCII值
就是else的时候,s1[i] = s[s.size()-1](最后一个字符)+ s[0] (第一个)
循环内部挨个输出就行了
中级光能
#include<iostream>
#include<string>
using namespace std;
int main()
{
int i;
string s,b;
cin>>s;
for(i=0;i<s.size();i++){
if(i!=s.size()-1)
b=s[i]+s[i+1];
else
b=s[0]+s[s.size()-1];
cout<<b;
}
return 0;
}
新手天翼
楼上的代码我借走了(狗头保命)
是这样的
定义两个字符串a和b
然后输入a(不用细说)
接着是最关键的一步
把i从0循环到a的测长度-2
每次都把a[i]+a[i+1]的值赋给b[i]
循环结束后,把a[0]+a[a.size()-1]赋给b[a.size()-1]
最后,输出b