zoukankan      html  css  js  c++  java
  • 【水】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忘记取模的痛
  • 相关阅读:
    django页面分类和继承
    django前端从数据库获取请求参数
    pycharm配置django工程
    django 应用各个py文件代码
    CF. 1428G2. Lucky Numbers(背包DP 二进制优化 贪心)
    HDU. 6566. The Hanged Man(树形背包DP DFS序 重链剖分)
    小米邀请赛 决赛. B. Rikka with Maximum Segment Sum(分治 决策单调性)
    区间树 学习笔记
    CF GYM. 102861M. Machine Gun(主席树)
    2016-2017 ACM-ICPC East Central North America Regional Contest (ECNA 2016) (B, D, G, H)
  • 原文地址:https://www.cnblogs.com/seekdreamer/p/3778603.html
Copyright © 2011-2022 走看看