ACdream 1069 无耻的出题人【规律】

来源:互联网 发布:unity3d透明材质 编辑:程序博客网 时间:2024/06/05 07:50

听到X神要参加比赛,只会Fibnacci数的出题人被吓得哭晕在厕所。为了防止X神AK(ALL KILL)比赛题目,无耻的出题人只好在题面上做些手脚(加密)。其中一道题的题目描述如下:

hjxh dwh v vxxpde,mmo ijzr yfcz hg pbzrxdvgqij rid stl mc zspm vfvuu vb uwu spmwzh.

比赛的时候X神对题面研究了四个多小时,终于发现了一丝规律,并且破解出了前四个单词hjxh dwh v vxxpde对应是:give you a number。

但是比赛时间所剩不多,X神需要你的帮助(在解密题面之后帮他写一个可以ac的代码o(╯□╰)o)。

Input
输入包含多组数据。

每组数据一个数字 n, n在long long范围内。

Output
对于每组测试数据,输出答案。

Sample Input
1
2
3
4
5
-1
-2
Sample Output
1
2
3
4
5
1
2

题意:题面是通过斐波那契数进行加密过的,发现规律即可得到原意(每一个数求每一位的和)。

#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<string>using namespace std;#define ll long long intint fi[100];void test1(){    fi[0] = 1ll;    fi[1] = 1ll;    for (int i = 2; i < 100; i++)    {        fi[i] = (fi[i - 1] + fi[i - 2])%26;    }    string str;    getline(cin, str);    string str2 = "give you a number";    /*for (int i = 0; i < str2.length(); i++)    {        cout << -(str2[i] - str[i])<<" ";    }*/    int k = 0;    for (int i = 0; i < str.length(); i++)    {        if (str[i] >= 'a'&&str[i] <= 'z')        {            str[i] -= (fi[k] % 26);            k++;            if (str[i] < 'a')                str[i] += 26;        }    }    cout << str << endl;    //system("pause");}int main(){    //test1();    int n;    char s[25];    while (~scanf("%s",s))    {        int len = strlen(s);        int sum = 0;        for (int i = 0; i < len; i++)        {            if (s[i] == '-')                continue;            sum += s[i] - '0';        }        printf("%d\n", sum);    }    return 0;}
原创粉丝点击