• 【水】ACdream无耻的出题人


    对于这道题我只想说坑爹。绝对的坑爹。

    还有这样出题的。。。。。

    无耻的出题人

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 KB (Java/Others)

    Problem Description

    听到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

    思路

    那个,,,首先是那段怪胎的英文。。我是没发现什么,因为2个h对应了2个不同的字母。。在度娘和tyvj群@澧、 有兰大牛帮助下。。终于理解了。。

    题目开头的Fibnacci原来是这么用的。。。。。。。。

    每一个密码字母的ascii码 减去对应位置的Fibnacci数值 再不断加减26 得到的答案转回字母就是原文

    这么简单的意思我居然打了半天代码。。。

     代码

    //逐字符翻译 
    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<cstring>
    using namespace std;
    long long s;
    long long  ans,i,n,b,c,d,k;
    char str[100];
    char ch;
    long long a[10000];
    int main()
    {
        a[0]=1;
        a[1]=1;
        for (i=2;i<=200;i++) a[i]=(a[i-1]+a[i-2])%26;
        gets(str);
        k=0;
        
        n=strlen(str);
        for (i=0;i<=n-1;++i)
        {
            ch=str[i];
            if ((ch>'z')||(ch<'a')) {cout<<ch;}
            else {
                     b=int(ch)-int('a')+1;
                     b-=a[k];
                     b=b+int('a')-1;
                     while (b<'a') b+=26;
                     while (b>'z') b-=26;
                     cout<<char(b);
                     k++;        
                 }
        }
        return 0;
    }

    然后就没有然后了,运行这个解密程序得到要做的事情:

     

    然后后面的事情。。似乎也忙了我一会儿。

    突然很怀念Pascal的时光。。如果Pa我3分钟搞定了。可惜这个OJ不能用P。下次不做这个无聊的OJ了。。。。。。

    正规代码

    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<cstring>
    using namespace std;
    int main()
    {
        char s[100];
        int a,ans,i,k;
        while (scanf("%s",s)!=EOF)   
        {
           ans=0;
           for (i=0;i<=strlen(s);i++)
           {
            if ((s[i]<='9')&&(s[i]>='0'))
              ans+=int(s[i])-int('0');
           }
           cout<<ans<<endl;
        } 
        return 0;
    }

     结果

    RunIDUserProblemVerdictTimeMemoryLangLengthSubmit Time
    14803 seekdreamer 1069 Accepted 20 MS 1672 KB C++ 352 B 2014-06-09 23:10:53

    总结

               C++判断文件结束:1.while (cin>>) 不推荐。。这题就是因为用cin死了,改成scanf就过了

                                           2.while(scanf( ) != EOF)                                                                             (这是柯嵩宇大神教的吧。。)

              不要乱用cin。。。。  

    noip忘记取模的痛
  • 相关阅读:
    SSM配置后可以访问静态html文件但无法访问其他后台接口的解决方案
    使用Idea部署SSM项目后,访问路径为url:8080/项目名_war_exploded的解决方案
    gym102302E_Chi's performance
    Linux命令之wc(Word Count)
    【贪心算法】最大整数
    贪心算法讲解及例题
    【贪心算法】均分纸牌
    【贪心算法】背包问题
    【基础题】字符串替换
    【基础题】对称排序
  • 原文地址:https://www.cnblogs.com/seekdreamer/p/3778603.html
Copyright © 2020-2023  润新知