19级爪哇程序设计新手赛(题解)

A.1+1 HDU - 1228
kk的英语作业,有两个小于100的正整数A和B,计算A+B.
A和B由对应的英文单词给出.
Input
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.
Output
对每个测试用例输出1行,即A+B的值.

这道题主要就是考大家对字符串的转化,英语到数字。
可能坑点就在于字符串 “123” 怎么转化为数字 一百二十三

#include <bits/stdc++.h>//打比赛万能头是个好东西
//目前只有poj不支持这个头文件好像,推荐使用
#define MAX_INT  ((unsigned)(-1)>>1)
using namespace std;
typedef unsigned long long ll;
char a[10][6] = {"zero","one","two","three","four","five","six","seven","eight","nine"};
//这里将英文存储起来
int change(string s)//寻找这个数字是什么
{for(int i=0;i<10;i++){if(a[i]==s) return i;}
}
int main(void)
{string s;while(1){int a=0,b=0;while(cin>>s){if(s=="+") break;a=a*10+change(s);//字符串 “123” 怎么转化为数字 一百二十三}while(cin>>s){if(s=="=") break;b=b*10+change(s);}if(a==0&&b==0) break;else cout<<a+b<<endl;}return 0;
}

B - 1 + 1 ! HDU - 1237
小明一天在家闲的无聊,突然想做个计算器程序。于是小明叫上好朋友小刚一起来完成这个问题。输入一行表达式,只包括’+’, ‘-’, ‘*’, ‘/’。
Input
多组输入,每个样例占一行,每行字符不超过两百,遇零结束
Output
对于每个样例,在一行输出表达式的值,保留小数点后两位。

这道题的确比较难。要利用好每个字符之间的空格。
注意点是,可以把正负号放在这个符合后面那个数。用数组储存,然后最后再累加一次。

#include <bits/stdc++.h>
#define MAX_INT  ((unsigned)(-1)>>1)
using namespace std;
typedef unsigned long long ll;
int main(void)
{double a[200],s,c;char b,d;while(scanf("%lf",&s)){char kk;kk=getchar();if(kk=='\n'){if(!s) break;else{printf("%.2lf\n",s);continue;}}a[0]=s;int i=0;while(scanf("%c %lf%c",&b,&c,&d)){if(b=='+') a[++i]=c;else if(b=='-') a[++i]=-1*c;else if(b=='*') a[i]*=c;else if(b=='/') a[i]/=c;if(d!=' ') break;}double ans=0;for(int j=0;j<=i;j++){ans+=a[j];}printf("%.2lf\n",ans);}return 0;
}

C - 1 + 1 ? HDU - 2524
给你一个高为n ,宽为m列的网格,计算出这个网格中有多少个矩形,下图为高为2,宽为4的网格.

Input
第一行输入一个t, 表示有t组数据,然后每行输入n,m,分别表示网格的高和宽 ( n < 100 , m < 100).
Output
每行输出网格中有多少个矩形.

不要给题目吓到了,弄成英语是为了更接近比赛,也只有这一道是英语的而已。

#include<bits/stdc++.h>
using namespace std;
int main(void)
{int n,a,b;cin>>n;while(n--){cin>>a>>b;long long a1=a*(a+1)/2;long long a2=b*(b+1)/2;cout<<a1*a2<<endl;}return 0;
}

D - 公倍数问题 HDU - 1108
给定两个正整数,计算这两个数的最小公倍数。
Input
输入包含多组测试数据,每组只有一行,包括两个不大于1000的正整数.
Output
对于每个测试用例,给出这两个数的最小公倍数,每个实例输出一行。

妥妥的签到题啊!!!
__gcd() :这个是内置的求最大公因数的函数!

#include <bits/stdc++.h>
#define MAX_INT  ((unsigned)(-1)>>1)
using namespace std;
typedef unsigned long long ll;
int main(void)
{int a,b;while(cin>>a>>b){cout<<a*b/__gcd(a,b)<<endl;}return 0;
}

E - 加多少? POJ - 1207
对于一个数字n,如果它是偶数则n=n/2,否则n=n*3+1。
对于一个区间[l,r]如果 l>r则为[r,l]中的数字,如果将其不停应用如上操作,直到其等于1为止。
问所需操作数最多的一个数字是多少?

Input
数据多测
每行输入一对数字l r
范围0< l, r < 10000

Output
对于每个区间,首先输出区间,然后输出区间中操作数最多的数字所需的操作数。

#include <iostream>
#include <algorithm>
#include <iomanip>
#include"stdio.h"
#include <cstring>
#include<math.h>
using namespace std;
int is(int l,int r)
{int max1=0;for(int k=l;k<=r;k++){int num=0;int i=k;while(i!=1){if(i%2==0){i/=2;num++;}else{i=i*3+1;num++;}}max1=max(num,max1);}return max1;
}
int main(void)
{int a,b;while(cin>>a>>b){int max1=0;max1=is(min(a,b),max(a,b));cout<<a<<" "<<b<<" "<<max1+1<<endl;}return 0;
}

F - 你有钱吗? HDU - 1284
在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。
Input
每行只有一个正整数N,N小于32768。
Output
对应每个输入,输出兑换方法数。

#include <bits/stdc++.h>
#define MAX_INT  ((unsigned)(-1)>>1)
using namespace std;
typedef unsigned long long ll;
ll a[40000];
int main(void)
{a[0]=1;for(int i=1;i<=3;i++){for(int j=i;j<32768;j++){a[j]+=a[j-i];}}int b;while(cin>>b){cout<<a[b]<<endl;}return 0;
}

G - 质数还是素数? HDU - 1262
哥德巴赫猜想大家都知道一点吧.我们现在不是想证明这个结论,而是想在程序语言内部能够表示的数集中,任意取出一个偶数,来寻找两个素数,使得其和等于该偶数.
做好了这件实事,就能说明这个猜想是成立的.
由于可以有不同的素数对来表示同一个偶数,所以专门要求所寻找的素数对是两个值最相近的.
Input
输入中是一些偶整数M(5<M<=10000).
Output
对于每个偶数,输出两个彼此最接近的素数,其和等于该偶数.

暴力判断是不是素数就可以了

#include<bits/stdc++.h>
using namespace std;
bool is(int k)
{for(int i=2;i<=sqrt(k);i++){if(k%i==0) return false;}return true;
}
int main(void)
{int n,a,b;while(cin>>n){a=n/2;//拆成两半b=n/2;do{if(is(a)&&is(b)){cout<<b<<" "<<a<<endl;break;}a++;b--;//对每一半进行判断}while(1);}return 0;
}

H - A pile of stones CodeForces - 1159A

小明一开始有一堆石子,给一个长度为n(1<=n<=100)的操作序列,"-“表示取出一个石子,”+"表示放入一个石子,求最后小明最后至少有几个石子.

Examples:
Input
3---
Output
0
Input
4
++++
Output
4
Input
2
-+
Output
1
Input
5
++-++
Output
3
#include"iostream"
using namespace std;
int main(void)
{int n,a=0;while(cin>>n){char aa[100];for(int i=0;i<n;i++){cin>>aa[i];if(aa[i]=='+')a++;//加石头else {a--;//减石头if(a<0)//如果小于0就归为0a=0;}}cout<<a<<endl;}return 0;
}

I - 还是素数 HDU - 1431
给了你几组a和b,希望你能找到a和b之间所有的回文质数(5 <= a < b <= 100000000)
Input
这里有许多组数据,每组包括两组数据a跟b。
Output
对每一组数据,按从小到大输出a,b之间所有满足条件的素数回文数(包括a跟b)每组数据之后空一行。

一直去判断是不是回文和素数会超时,你看看,1e8,一亿次运算!!
所以不能从 l 跑到 r ,相反,把素数或者回文数给存起来,每次判断这些数就可以!

#include <bits/stdc++.h>
#define MAX_INT  ((unsigned)(-1)>>1)
using namespace std;
typedef unsigned long long ll;
bool is(int k)
{for(int i=2;i<=sqrt(k);i++){if(k%i==0) return false;}return true;
}
int a[100000]={5,7,11};
int m=3;
void kkk(){int i,j,k,l;for(i=1;i<10;i++)for(j=0;j<10;j++){a[m++]=i*100+j*10+i;}for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){a[m++]=i*10000+j*1000+k*100+j*10+i;}for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++)for(l=0;l<10;l++){a[m++]=i*1000000+j*100000+k*10000+l*1000+k*100+j*10+i;}for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++)for(l=0;l<10;l++){a[m++]=i*10000000+j*1000000+k*100000+l*10000+l*1000+k*100+j*10+i;}
}
int main(void)
{kkk();int l,r;while(cin>>l>>r){for(int i=0;i<=m;i++){if(a[i]>=l&&a[i]<=r&&is(a[i]))cout<<a[i]<<endl;}cout<<endl;}return 0;
}

J - 不容易系列之一 HDU - 1465
WBH垃圾丢错啦,他想知道有多少种丢错垃圾的可能,总共有n袋垃圾和n个垃圾桶,假设wbh全丢错了呢,那么他有多少种丢错的可能,请输出一个值代表wbh有多少种可能全丢错
Input
输入数据包含多个多个测试实例,每个测试实例占用一行,每行包含一个正整数n(1<n<=20),n表示垃圾桶和垃圾袋的量。
Output
对于每行输入请输出可能的错误方式的数量,每个实例的输出占用一行。

#include <bits/stdc++.h>
using namespace std;
int main(){int i,n;long long a[21],s;a[1]=0;a[2]=1;a[3]=2;for(i=4;i<=20;i++)a[i]=(i-1)*(a[i-1]+a[i-2]);while(~scanf("%d",&n)){printf("%lld\n",a[n]);}return 0;
}

K - 嘿嘿嘿!排序题 HDU - 1031
X市要参加优秀城市评比了!为了了解市民对X市各方面的满意度,阿Q针对市民专门做了一个问卷调查。问卷列出了关于城市的M个方面,随机寻找N个人来对城市打分。为了更好的宣传X市,阿Q决定从中选出K个方面来对城市进行宣传,请你找出市民满意度最高的K个方面。
Input
多组输入。
第一行:N M K
第2~N+1行:每行M个数,表示每个人对第i个方面的满意度
Output
对于每组输入,输出得分最高的K个方面(按照非递增顺序排列)
没有多余的空格或换行

先将num的值进行排序,再对id值进行排序。
推荐了解并熟悉 sort()内置函数机制~

#include <bits/stdc++.h>
#define MAX_INT  ((unsigned)(-1)>>1)
using namespace std;
typedef unsigned long long ll;
struct node
{int id;double num;
}a[100005];
bool cmp1(node x,node y)
{return x.num>y.num;
}
bool cmp2(node x,node y)
{return x.id>y.id;
}
int main(void)
{int n,m,k;while(cin>>n>>m>>k){for(int i=1;i<=m;i++) a[i].id=i,a[i].num=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){double p;cin>>p;a[j].num+=p;}}sort(a+1,a+1+m,cmp1);sort(a+1,a+1+k,cmp2);for(int i=1;i<k;i++){cout<<a[i].id<<" ";}cout<<a[k].id<<endl;}return 0;
}

19级爪哇程序设计新手赛(题解)相关推荐

  1. 19级爪哇程序设计新手赛2.0(参考题解)

    看完它 A - Candies CodeForces - 1343A 题意: (1)玄学观察法,咋们先来看看案例: 3 --> 1 除以3==2^2-1 6 --> 2 除以3 7 --& ...

  2. 20级爪哇程序设计新生赛(一)题解

    20级爪哇程序设计新生赛题解 20级爪哇程序设计新生赛1.0(正式赛) A.The Tree Of LittleZhua(思维或者线段树) Easy Version Hard Version B.小爪 ...

  3. 21级爪哇程序设计新生赛(二)题解

    21级爪哇程序设计新生赛(二) 序 A 小爪的数字集合(并查集) B 小爪的得分(博弈) C 小爪的博弈(博弈) D ljc和cyj玩五子棋(模拟) E ljc和雪球(模拟) F LJC的背包(动态规 ...

  4. 广东外语外贸大学2022年程序设计新手赛の题解

    题面PDF 题目链接(需要连接广外校园网) A题 牛三的CF分数 题意 输出nnn+mmm 标程 #include <bits/stdc++.h> using namespace std; ...

  5. GDUFS 2018信息学院程序设计新手赛(正式赛)题解

    紧张刺激的新手赛结束了--有惊无险啊啊啊,虽然中途OJ炸了一次--很快就修复,感谢大家耐心的等待! 谢谢大家!!! 题解开始前,先向大家道个歉,题目还是很多误导人的地方,测评机崩了,导致很多人题没过. ...

  6. GDUFS 2018信息学院程序设计新手赛(正式赛)Java版题解

    Problem A: HELLO Description <绝地求生>(PUBG) 是一款战术竞技型射击类沙盒游戏 . 该游戏中,玩家需要在游戏地图上收集各种资源,并在不断缩小的安全区域内 ...

  7. GDUFS 2017信息学院程序设计新手赛(正式赛)题解

    紧张刺激的新手赛结束了--有惊无险啊啊啊,虽然中途OJ炸了一次--很快就修复,感谢大家耐心的等待!一开始有的教室环境没装好,也感谢大家耐心的等待下载--毕竟我校第一次除了考试,搞这么大型的ACM比赛- ...

  8. 2021暨南大学轩辕杯ACM程序设计新生赛题解

    title : 2021暨南大学轩辕杯ACM程序设计新生赛 date : 2021-12-12 tags : ACM,练习记录 author : Linno 题目链接:https://ac.nowco ...

  9. 2020团体程序设计天梯赛题解(部分)

    文章目录 个人题解:这里我只写我个人认为应该写的题解,太简单的就不写了 L2-2 口罩发放 (25分) 思路:正解 L2-3 完全二叉树的层序遍历 (25分) 思路:正解 L2-4 网红点打卡攻略 ( ...

最新文章

  1. jquery text方法html,jquery text(),html()方法的区别
  2. Wt::WPaintDevice
  3. TCP三次握手Render Tree页面渲染=从输入URL到页面显示的过程?
  4. Stanford CoreNLP使用需要注意的一点
  5. 文本基线怎样去掉_ICML 2020 | 基于类别描述的文本分类模型
  6. 2015年蓝汛面试题
  7. CF388D-Fox and Perfect Sets【dp,线性基】
  8. raw_input() 与 input() __ Python
  9. linux命令格式与快捷键
  10. 如何转换为系统应用_如何将AVI转换为GIF
  11. 力扣-876 链表的中间结点
  12. expect - linux远程执行命令
  13. 青岛发文:3年将在全市全面实施电子劳动合同和电子集体合同
  14. ie tab 强制使用外部程序——ie view
  15. ERP项目组成员及各项目组职责
  16. 学完计算机控制系统的感受,管理信息系统学习心得体会(精选5篇)
  17. WINRAR5.0破解
  18. 什么是数据分层,数据分层的作用!
  19. 铁矿石需求量matlab代码,铁矿石期货市场分析
  20. 算法与数据结构学习资料及面试

热门文章

  1. Unity 基于LineRenderer组件实现连线功能
  2. 直方图规定化:SML和GML
  3. cyk的小学数学题 小学数学
  4. HTML5期末大作业:XXX 网站设计——指环王:护戒使者(13页) HTML+CSS+JavaScript HTML+CSS+JS网页设计期末课程大作业 web前端开发技术 web课程设计 网页规
  5. 蓝桥 第八大奇迹 (线段树)
  6. PHP编辑器哪个好用些?
  7. a2dp sink 在android kk和L实现的区别
  8. Terraform 学习总结(9)—— 如何解决存量云资源的管理难题
  9. 阿里妈妈站长全国群英会SEO演讲PPT下载
  10. 非地面无线通信网络的增强技术