首页 > 代码库 > 虐我半下午的水题(ACdream无耻的出题人)

虐我半下午的水题(ACdream无耻的出题人)

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

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

无耻的出题人

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

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;
}

 

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

 

(博客园真是过分,图片永远上不去,百度也是,图片不能共享!)

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

 

    give you a number,and your task is calculating the sum of each digit in the number.(题目)

 

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

突然很怀念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;
}

 

 

 

RunID User Problem Verdict Time Memory Lang Length Submit Time
14803 seekdreamer 1069 Accepted 20 MS 1672 KB C++ 352 B 2014-06-09 23:10:53

 

 

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

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

          不要乱用cin。。。。