程序设计实践练习(执行,暴力)2

原创 2017年08月13日 09:30:53

Problem A Balloon

题目描述
ICPC比赛当你过了一道题以后,会发一个标识这道题颜色的气球。 现给你2个队过的气球的颜色,求他们都过了的气球是哪些?
输入
第一行是一个整数K,表示样例的个数(K≤100)。 每个样例的第一行是两个整数N和M,1≤N,M≤100000,表示两个队分别过题的数量; 第二、三行分别是N和M个有序的整数Xi和Yi,0≤Xi,Yi≤109,表示气球的颜色。 输入数据保证集合{Xi}和{Yi}的元素都是唯一的,且两个集合一定存在交集
输出
每个样例输出两行,第一行输出相同的过题数目S,第二行按升序输出S个整数,每个整数之间空一个空格。
样例输入
2
3 3
1 2 3
1 2 3
3 2
1 2 3
2 3
样例输出
3
1 2 3
2
2 3

#include<bits/stdc++.h> 
#define N 100002
using namespace std;

int teamn[N];
int teamm[N];
int same[N];

int main(){
    int k,n,m,i,j,cnt;
    //memset(same,0,sizeof(same));
    scanf("%d",&k);
    while(k--){
        cnt=0;
        scanf("%d %d",&n,&m);
        for(j=0;j<n;j++)scanf("%d",&teamn[j]);
        for(i=0;i<m;i++)scanf("%d",&teamm[i]);
        i=0;
        j=0;
        while(j<n&&i<m){
                if(teamm[i]>teamn[j])j++;
                else if(teamm[i]==teamn[j]){
                    same[cnt++]=teamm[i];
                    i++;
                    j++;
                }
                else 
                    i++;
            }
        printf("%d\n",cnt);
        for(i=0;i<cnt-1;i++)printf("%d ",same[i]);
        printf("%d\n",same[cnt-1]);
    }
    return 0;
}

Problem B 算术题

题目描述
小明在做加减法的算术题,有些题他不会做,那么他会不填答案,有些题可能做错了。 请你写个程序,判断一下小明作对了几道题?
输入
每行一个算术式,形如a+b=c,a-b=c,a+b=,a-b=。0≤a,b,c≤100
输出
输出正确的题目数。
样例输入
1+1=2
1+2=4
2-1=1
2-2=
3+6=
样例输出
2

#include<bits/stdc++.h>
using namespace std;

char s[50];

int main(){  
    int d1,d2,d3;
    int cnt=0;
    char op,op2;
    while(gets(s)){
        sscanf(s,"%d%c%d%c%d",&d1,&op,&d2,&op2,&d3);
        switch(op){
            case '+':if(d1+d2==d3)cnt++;break;
            case '-':if(d1-d2==d3)cnt++;break;
        } 
        d3=0x3f3f3f3f;          //无穷大 
        memset(s,0x3f,sizeof(s)); //or memset(s,'\0',sizeof(s);
    }
    printf("%d\n",cnt); 
    return 0;
}
}

Problem C Eason

题目描述
Eason是个非常迷信的人,他喜欢数字3和6,不喜欢4和7。 如果一个数字的数码中没有4和7,而有3或者6的话,他就会喜欢这个数字。 比如,他会喜欢13,36,但是不会喜欢14,34。但对于28这种的,他就无所谓喜欢还是不喜欢。 Eason想知道区间[a,b]中一共有多少个他喜欢和不喜欢的数字?
输入
每行输入一个样例,为a和b,0≤a≤b≤106。如果a和b都为0,那么输入结束,这个样例不需要处理。
输出
每行输出一个样例的结果,先输出喜欢数字的个数,再输出不喜欢数字的个数
样例输入
1 10
1 100
1 1000000
0 0
样例输出
2 2
28 36
215488 737856

#include<bits/stdc++.h>
#define N 1000001
using namespace std;

int like[N];
int dislike[N];
int a[N];
int d=0,l=0;

void judge(){
    int m;
    for(int i=0;i<N;i++){
        int flag=0;
        int n=i;
        while(n){
            m=n%10;
            n=n/10;
            if(m==4||m==7){
                flag=1;
                break;
            }
            else if(m==3||m==6){
                flag=-1;
                continue;
            }
            else 
                continue;
        }
        a[i]=flag;
    }
    for(int i=0;i<N;i++){
        if(a[i]==1){
            dislike[i]=++d;
            like[i]=l;
        }
        else if(a[i]==-1){
            dislike[i]=d;
            like[i]=++l;
        }
        else{
            dislike[i]=d;
            like[i]=l;
        }
    }
} 


int main(){
    judge();
    int a,b;
    while(scanf("%d %d",&a,&b)&&a!=0&&b!=0){
        if(a!=0)printf("%d %d\n",like[b]-like[a-1],dislike[b]-dislike[a-1]);
        if(a==0)printf("%d %d\n",like[b],dislike[b]);
    }
    return 0;
}

Problem D 最大子段和

题目描述
给你一个数列a1,a2,…,an,求m个连续数字组成的子段和最大值。
输入
有多个样例,每个样例的第一行是两个整数n和m,(1≤m≤n;≤100,000)。如果n和m为0表示输入结束,这个样例不需要处理。第二行是n个整数ai,0≤ai≤10000。
输出
每行输出一个整数,即样例的结果。
样例输入
6 3
1 2 3 4 5 6
6 3
1 2 3 3 2 1
0 0
样例输出
15
8

#include<bits/stdc++.h>
#define N 100001

using namespace std;

int a[N];
int s[N];

int main(){
    int m,n;
    while(scanf("%d %d",&n,&m)&&n!=0&&m!=0){
        s[m-1]=0;
        for(int i=0;i<n;i++){
            scanf("%d",&a[i]);
            if(i==m-1){
                for(int j=0;j<m;j++)s[i]+=a[j];
                s[0]=s[i];
            }
            else {
                s[i]=s[i-1]+a[i]-a[i-m];
                if(s[i]>s[0])s[0]=s[i];
            }
        }
        printf("%d\n",s[0]);
    }
    return 0;
}

Problem E ASCII

题目描述
给你一段ASCII编码的文字,输出其每个字符的ASCII码。
输入
一段文字,由ASCII码字符组成。
输出
先输出行号,行号为16进制,占5位,从0开始计数,行号前导为0,然后空一格。 每行最多输出32个字符的ASCII码,每个ASCII码为16进制,占2位,前导为0,中间用空格隔开。 所有16进制使用大写A~F表示10~15。最后一行行末无空格,无换行。
样例输入
ACM International Collegiate Programming Contest,
I LOVE YOU
Lotus is a mystic symbol.
样例输出
00000 41 43 4D 20 49 6E 74 65 72 6E 61 74 69 6F 6E 61
00001 6C 20 43 6F 6C 6C 65 67 69 61 74 65 20 50 72 6F
00002 67 72 61 6D 6D 69 6E 67 20 43 6F 6E 74 65 73 74
00003 2C 0A 49 20 4C 4F 56 45 20 59 4F 55 0A 4C 6F 74
00004 75 73 20 69 73 20 61 20 6D 79 73 74 69 63 20 73
00005 79 6D 62 6F 6C 2E 20 0A

#include<bits/stdc++.h>

using namespace std;

char s[10001];

int main(){
    int cnt=0;
    int n=0;
    char a[10001];
    while(gets(a)!=0){
        n=strlen(a);
        for(int i=0;i<n;i++)s[cnt++]=a[i];
        s[cnt++]='\n';
    }
    for(int i=0;i<float(strlen(s)/16.0);i++){
        printf("%05X",i);
        for(int j=0;j<16&&16*i+j<strlen(s);j++)printf(" %02X",s[16*i+j]);
        if(i<=float(strlen(s)/16)-1)printf("\n");
    }
    return 0;
} 

Problem F Tourist 1

题目描述
Eric喜欢旅行,今年暑假终于可以有几天时间出去玩了。他计划在去3个不同的城市,而且不想重复去相同的城市,最后回到出发的城市,他想知道怎么走可以让差旅费用降到最低? 我们把城市编号为0~3,Eric总从0号城市出发
输入
第一行是一个整数K,表示样例的个数。 每个样例占4行,每行4个整数Xij,第i行第j列个整数表示从城市i到城市j所需要的旅费,单次费用不超过1000。i = j 时,Xij = 0。
输出
每行输出一个样例的结果,包括两行,第一行是差旅的总费用,第二行是3个城市的编号序列,每个城市编号之间用一个空格隔开,表示旅行的路线,如果存在多条线路都是最少花费,请输出字典序输出这些线路,每个线路一行。
样例输入
1
0 1 1 1
2 0 2 2
3 3 0 3
4 4 4 0

样例输出
10
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

#include<bits/stdc++.h>

using namespace std;

int main(){
    int n;
    int cnt;
    int s[4][4];
    scanf("%d",&n);
    while(n--){
        for(int i=0;i<4;i++){
            for(int j=0;j<4;j++){
                scanf("%d",&s[i][j]);
            }
        }
        int sum=0;
        int min=4001;
        int m[6][3];
        for(int i=1;i<4;i++){
            for(int j=1;j<4;j++){
                if(i==j)continue;
                for(int k=1;k<4;k++){
                    if(k==i||k==j)continue;
                    sum=s[0][i]+s[i][j]+s[j][k]+s[k][0];
                    if(sum>min)continue; 
                    if(sum<min){
                        min=sum;
                        cnt=0;
                        m[cnt][0]=i;
                        m[cnt][1]=j;
                        m[cnt][2]=k;
                        cnt++;
                    }
                    else if(sum==min){
                        m[cnt][0]=i;
                        m[cnt][1]=j;
                        m[cnt][2]=k;
                        cnt++;
                    }
                }
            }
        }
        printf("%d\n",min);
        for(int i=0;i<cnt;i++){
            for(int j=0;j<3;j++){
                printf("%d",m[i][j]);
                if(j<2)printf(" ");
            }
            printf("\n");
        }   
    }
}

Problem G 电话号码-隐去的字符

题目描述
电视上经常需要显示用户的手机号码,可是一般为了保留用户的隐私,会将中间的4位数字用“*”代替。
现在给你一个电话号码,请输出代替后的电话号码。
输入
第一行是一个整数K,表示样例的个数。 以后每行一个手机号码,一共11位。
输出
每行输出一个结果。
样例输入
2
13112345678
13198765432
样例输出
131****5678
131****5432

#include<bits/stdc++.h>

using namespace std;

int main(){
    char s[15];
    int n;
    scanf("%d",&n);
    while(n--){
        scanf("%s",&s);
        for(int i=0;i<strlen(s);i++){
            if(i<3||i>6)printf("%c",s[i]);
            else printf("*");
        }
        printf("\n");
    }
    return 0;
} 

Problem H 湘潭大学

题目描述
湘潭大学简称“XTU”,作为即将成为湘大的一份子,怎么不能为湘大添砖加瓦了?现在给你一个字符串,请你计算一下,从中选取字符,最多能组成多少个“XTU”?
输入
第一行是一个整数K,表示样例的个数。 以后每行一个字符串,字符串只包含英文大写字母,长度不会超过1000。
输出
每行输出一个样例的结果。
样例输入
3
XTUUTX
ABCDEFGHIJKLMNOPQRSTUVWXTZ
XXXTTT
样例输出
2
1
0

#include<bits/stdc++.h>

using namespace std;

int main(){
    int n;
    int x,t,u;
    int m;
    char s[1002];
    scanf("%d",&n);
    while(n--){
        scanf("%s",s);
        x=0;
        t=0;
        u=0;
        for(int i=0;i<strlen(s);i++){
            switch(s[i]){
                case 'X':x++;break;
                case 'T':t++;break; 
                case 'U':u++;break;
            }
        }
        m=min(x,t);
        m=min(m,u);
        printf("%d\n",m);
    }
    return 0;
}

Problem I 勾股数

题目描述
勾股数是指满足a2+b2=c2的正整数,比如最有名的“勾三股四弦五”。
现在给你两个正整数,请问是否存在另外一个正整数,使其成为“勾股数”?
输入
第一行是一个整数K,表示样例的个数。 以后每行一个样例,为两个整数x,y,(1≤x,y≤10000)。
输出
每行输出一个样例的结果。如果不能构成勾股数,输出“None”,如果存在多个,输出最小的那个。
样例输入
3
3 4
2 6
12 13
样例输出
5
None
5

#include<bits\stdc++.h>

using namespace std;

int main(){
    int n;
    int a,b,c,d;
    scanf("%d",&n);
    while(n--){
        scanf("%d %d",&a,&b);
        c=a*a+b*b;
        d=max(a,b)*max(a,b)-min(a,b)*min(a,b);
        //printf("%d %d %d %d\n",c,d,(int)sqrt(c),(int)sqrt(d));
        if(((int)sqrt(c)*(int)sqrt(c)==c)&&((int)sqrt(d)*(int)sqrt(d)==d)&&(c>0)&&(d>0))printf("%d\n",(int)sqrt(d));
        else if((int)sqrt(c)*(int)sqrt(c)==c&&c>0)printf("%d\n",(int)sqrt(c));
        else if((int)sqrt(d)*(int)sqrt(d)==d&&d>0)printf("%d\n",(int)sqrt(d));
        else printf("None\n");
    }
    return 0;
} 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

程序设计实践练习(执行,暴力)1

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...

2013-BIT程序设计 2.修剪草坪 -- 暴力

2.修剪草坪 有一个n*m的草坪(1 现在给出一个图案,问是否可以把草坪割成图案的样子。 输入第一行包含两个整数n和m。 接下来为n行输入,每行包含m个不大于100的正整数。 如果可以修剪成输入的...

《C语言及程序设计》实践项目——动态数组 ->【项目2-动态数组排序】

2017-04-30编一个程序,输入某班某门课的成绩,进行排序后输出。成绩可能为小数。班级人数不定,要求采用动态数组完成。//项目2-动态数组排序 #include #include//数组打印函数 ...

XMU C语言程序设计实践(2)

任务一:颠倒的世界   小明最近突然喜欢倒着写字,写出来的句子全是颠倒的,也就是把一句话里的字符全都逆序写,譬如“I Love This Game!”,他就偏偏要写成“!emaG sihT evo...

《C++程序设计原理与实践》部分习题答案 2

5.8 #include #include using namespace std; int main() { int N,i=0,sum=0; char ch; vector v; ...

c++程序设计原理与实践 第四章简单练习

以下程序是 简单练习 中笔者的解答方法。C++初学者,若有考虑不周之处还望指正!

程序设计与数据结构综合实践II第一周练习 A - Isenbaev's Number

Description Isenbaev's Number: Isenbaev本人为0,Isenbaev的队友为1,Isenbaev的队友的队友为2,……以此类推  I...

hihoCoder 1227 The Cats' Feeding Spots(暴力)——ACM-ICPC国际大学生程序设计竞赛北京赛区(2015)网络赛

A The Cats' Feeding Spots(暴力)——ACM-ICPC国际大学生程序设计竞赛北京赛区(2015)网络赛

【“盛大游戏杯”第15届上海大学程序设计联赛 G】【暴力模拟或状态DP高效做法】战斗

购买装备 发布时间: 2017年7月9日 18:17   最后更新: 2017年7月9日 21:05   时间限制: 1000ms   内存限制: 128M 描述 最近盛大的一款游戏...

【HDU5923 2016CCPC东北地区大学生程序设计竞赛 - 重现赛 B】【并查集 暴力 复杂度计算】Prediction 生效若干条链上的所有边条件下的联通块情况

Prediction Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Tot...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)