zoukankan      html  css  js  c++  java
  • 历届试题 密码发生器

    在对银行账户等重要权限设置密码的时候,我们常常遇到这样的烦恼:如果为了好记用生日吧,容易被破解,不安全;如果设置不好记的密码,又担心自己也会忘记;如果写在纸上,担心纸张被别人发现或弄丢了...

        这个程序的任务就是把一串拼音字母转换为6位数字(密码)。我们可以使用任何好记的拼音串(比如名字,王喜明,就写:wangximing)作为输入,程序输出6位数字。

        变换的过程如下:

        第一步. 把字符串6个一组折叠起来,比如wangximing则变为:

        wangxi

        ming

        第二步. 把所有垂直在同一个位置的字符的ascii码值相加,得出6个数字,如上面的例子,则得出:

        228 202 220 206 120 105

        第三步. 再把每个数字“缩位”处理:就是把每个位的数字相加,得出的数字如果不是一位数字,就再缩位,直到变成一位数字为止。例如: 228 => 2+2+8=12 => 1+2=3

        上面的数字缩位后变为:344836, 这就是程序最终的输出结果!

        要求程序从标准输入接收数据,在标准输出上输出结果。

        输入格式为:第一行是一个整数n(<100),表示下边有多少输入行,接下来是n行字符串,就是等待变换的字符串。

        输出格式为:n行变换后的6位密码。

        例如,输入:

    5

    zhangfeng

    wangximing

    jiujingfazi

    woaibeijingtiananmen

    haohaoxuexi

        则输出:

    772243

    344836

    297332

    716652

    875843

        注意:

        请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!   

        在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<iostream>
     4 using namespace std;
     5 int f(int n)
     6 {
     7     int z=0;
     8     if(n/10==0)
     9     return n;
    10     while(n)
    11     {
    12         z+=n%10;
    13         n/=10;
    14     }
    15     f(z);
    16 }
    17 int main()
    18 {
    19     int n;
    20     int b[7];
    21     char s[1000];
    22     scanf("%d",&n);
    23     for(int i=0;i<n;i++)
    24     {
    25         scanf("%s",s);
    26         memset(b,0,sizeof(b));
    27         int len=strlen(s);
    28         int a=len/6;
    29         if(len%6!=0)
    30         {
    31             a++;
    32         }
    33         for(int j=0;j<6;j++)
    34         {
    35             for(int k=0;k<a;k++)
    36             {
    37                 if(6*k+j>len)
    38                     b[j]+=0;
    39                 else
    40                   b[j]+=s[6*k+j];
    41             }        
    42         }
    43         for(int j=0;j<6;j++)
    44         {
    45             b[j]=f(b[j]);
    46             printf("%d",b[j]);
    47         }
    48         printf("
    ");
    49     }
    50     return 0;
    51 }
  • 相关阅读:
    Codechef EDGEST 树套树 树状数组 线段树 LCA 卡常
    BZOJ4319 cerc2008 Suffix reconstruction 字符串 SA
    Codechef STMINCUT S-T Mincut (CodeChef May Challenge 2018) kruskal
    Codeforces 316G3 Good Substrings 字符串 SAM
    Codechef CHSIGN Change the Signs(May Challenge 2018) 动态规划
    BZOJ1396 识别子串 字符串 SAM 线段树
    CodeForces 516C Drazil and Park 线段树
    CodeForces 516B Drazil and Tiles 其他
    CodeForces 516A Drazil and Factorial 动态规划
    SPOJ LCS2
  • 原文地址:https://www.cnblogs.com/zeze/p/mimafashenqi.html
Copyright © 2011-2022 走看看