码迷,mamicode.com
首页 > 编程语言 > 详细

算法学习--Day7

时间:2018-04-26 15:30:26      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:除法   结果   大于   str   out   十进制   har   input   读取   

今天多做一些杂题练习一下。

第一题:

题目描述

在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别。我们给出一种最简的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,则可得到一个简单的加密字符串。

输入描述:

读取这一行字符串,每个字符串长度小于80个字符

输出描述:

对于每组数据,输出每行字符串的加密字符串。
示例1

输入

Hello! How are you!

输出

Ifmmp! Ipx bsf zpv!


//
// Created by 陈平 on 2018/4/17.
//

#include <iostream>
#include "string.h"
#include <string.h>
using namespace std;

int main(){

    string test;
    getline(cin,test);
        int i = 0;
        while (test[i]!=\0)
        {
            if(test[i]<=z&&test[i]>=a ) cout<<char((test[i]-a+1)%26+a);

            else if (test[i]>=A&& test[i]<=Z) cout<<char((test[i]-A+1)%26+A);
            else cout<<test[i];
            i++;
        }
        cout<<endl;

    return 0;
}

这道题坑在使用getline上,不然他会遇到空格就跳过了。

 

题目描述

N只小白鼠(1 <= N <= 100),每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量,要求按照白鼠重量从大到小的顺序输出它们头上帽子的颜色。帽子的颜色用“red”,“blue”等字符串来表示。不同的小白鼠可以戴相同颜色的帽子。白鼠的重量用整数表示。

输入描述:

多案例输入,每个案例的输入第一行为一个整数N,表示小白鼠的数目。
下面有N行,每行是一只白鼠的信息。第一个为不大于100的正整数,表示白鼠的重量,;第二个为字符串,表示白鼠的帽子颜色,字符串长度不超过10个字符。

注意:白鼠的重量各不相同。

输出描述:

每个案例按照白鼠的重量从大到小的顺序输出白鼠的帽子颜色。
示例1

输入

3
30 red
50 blue
40 green

输出

blue
green
red

//
// Created by 陈平 on 2018/4/17.
//

#include <iostream>
#include "string.h"
#include <string.h>
#include "algorithm"
using namespace std;
struct E{
    int num;
    char color[1000];
};
bool cmp(E a,E b){
    return a.num>b.num;
}
int main(){
int n;
while (scanf("%d",&n)!=EOF){
    E buf[101];
    for (int i = 0; i < n; ++i) {
        cin>>buf[i].num>>buf[i].color;
    }
    sort(buf,buf+n,cmp);
    for (int j = 0; j <n ; ++j) {
        cout<<buf[j].color<<endl;
    }

}

    return 0;
}

 

 

 

题目描述

已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k.

输入描述:

若干个非负整数c,c的位数<=30
每行一个c

输出描述:

每一个c的结果占一行
1) 若存在满足 c%k == 0 的k,输出所有这样的k,中间用空格隔开,最后一个k后面没有空格。
2) 若没有这样的k则输出"none"

注意整数溢出问题
不要对-1进行计算
示例1

输入

30
72
13

输出

2 3 5 6
2 3 4 6 8 9
none


//
// Created by 陈平 on 2018/4/17.
//

#include <iostream>
#include "string.h"
#include <string.h>
#include "algorithm"
using namespace std;

int main(){
char input[50];
while (scanf("%s",input)!=EOF){
    int noflag=0;
    int len = strlen(input);
    if(input[0]==-) continue;
    int flag =1;
    for (int k = 2; k <=9 ; ++k) {
        int mid=0;

        for (int i = 0; i < len; ++i) {
            int cut = input[i] - 0;
            mid = (mid*10+cut)%k;
        }

        if(mid==0) {
            noflag = 1;
            if(flag==1) {cout<<k;
            flag=0;}
            else{
                cout<<" "<<k;
            }
        }


    }
    if(noflag==0) cout<<"none";
    cout<<endl;
}

    return 0;
}

 

这道题目关联高精度题目,所以我们自定义了除法方法去计算。关键一步在于mid的那一行,处理好这一行就ok。

 

算法学习--Day7

标签:除法   结果   大于   str   out   十进制   har   input   读取   

原文地址:https://www.cnblogs.com/Pinging/p/8950454.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!