L1-031 到底是不是太胖了
据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | < 标准体重×10%)。已知 1 公斤等于 2 市斤。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。
输入格式:
输入第一行给出一个正整数
N
(≤ 20)。随后N
行,每行给出两个整数,分别是一个人的身高H
(120 <H
< 200;单位:厘米)和真实体重W
(50 <W
≤ 300;单位:市斤),其间以空格分隔。输出格式:
为每个人输出一行结论:如果是完美身材,输出
You are wan mei!
;如果太胖了,输出You are tai pang le!
;否则输出You are tai shou le!
。输入样例:
3 169 136 150 81 178 155
输出样例:
You are wan mei! You are tai shou le! You are tai pang le!
#include<stdio.h>
#include<math.h>
int main (void)
{
int i,n;
scanf("%d\n",&n);
for(i=0;i<n;i++){
float a,b;
scanf("%f %f",&a,&b);
float standard = (a-100)*0.9*2;
//顺序不一样也不行吗
if(fabs(b-standard)<standard*0.1) printf("You are wan mei!\n");
else if(standard<b) printf("You are tai pang le!\n");
else printf("You are tai shou le!\n");
}
return 0;
}
L1-032 Left-pad
根据新浪微博上的消息,有一位开发者不满NPM(Node Package Manager)的做法,收回了自己的开源代码,其中包括一个叫left-pad的模块,就是这个模块把javascript里面的React/Babel干瘫痪了。这是个什么样的模块?就是在字符串前填充一些东西到一定的长度。例如用
*
去填充字符串GPLT
,使之长度为10,调用left-pad的结果就应该是******GPLT
。Node社区曾经对left-pad紧急发布了一个替代,被严重吐槽。下面就请你来实现一下这个模块。输入格式:
输入在第一行给出一个正整数
N
(≤104)和一个字符,分别是填充结果字符串的长度和用于填充的字符,中间以1个空格分开。第二行给出原始的非空字符串,以回车结束。输出格式:
在一行中输出结果字符串。
输入样例1:
15 _ I love GPLT
输出样例1:
____I love GPLT
输入样例2:
4 * this is a sample for cut
输出样例2:
cut
#include<stdio.h>
#include<string.h>
int main(void)
{
//需要2个数组,
int n;
char ch;
scanf("%d %c\n",&n,&ch);
char arr2[1010000];
gets(arr2);
size_t len = strlen(arr2);
int x = n- len;
if(x>=0){
for(int i=1;i<=x;i++) {
printf("%c",ch);
}
printf("%s",arr2);}
else{
for(int i=len-n;i<=len;i++){
putchar(arr2[i]);
}
}
return 0;
}
L1-033 出生年【这一题注意统计编号出现统计次数的方法,利用数组及下标】【还有统计一个数不同数字有几个难点】
以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求,自动填充“我出生于
y
年,直到x
岁才遇到n
个数字都不相同的年份”这句话。输入格式:
输入在一行中给出出生年份
y
和目标年份中不同数字的个数n
,其中y
在[1, 3000]之间,n
可以是2、或3、或4。注意不足4位的年份要在前面补零,例如公元1年被认为是0001年,有2个不同的数字0和1。输出格式:
根据输入,输出
x
和能达到要求的年份。数字间以1个空格分隔,行首尾不得有多余空格。年份要按4位输出。注意:所谓“n
个数字都不相同”是指不同的数字正好是n
个。如“2013”被视为满足“4位数字都不同”的条件,但不被视为满足2位或3位数字不同的条件。输入样例1:
1988 4
输出样例1:
25 2013
输入样例2:
1 2
输出样例2:
0 0001
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int m=0;
int main(){
int y,n,sum=0,index=0,arr[10]={0},temp=0;
cin>>y>>n;
for(int i=y;;i++){
temp=i;
//因为%10,会有10种数字,0-9,将数字%10后,作为下标改变数组的值
//年份不超过3000,循环四次即可
for(int j=0;j<4;j++){
index=temp%10;
arr[index]++;
temp/=10;
}
//计算数组中不同的数字的总个数
for(int j=0;j<10;j++){
if(arr[j]!=0)sum++;
}
//开始判断
if(sum==n){
printf("%d %04d",i-y,i);
break;
}
//如果不符合题意,全部清零,重新循环
for(int j=0;j<10;j++)arr[j]=0;
sum=0;
}
return 0;
}
L1-034 点赞【这一题也用到了上一题数组计数的方法】
微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。本题就要求你写个程序,通过统计一个人点赞的纪录,分析这个人的特性。
输入格式:
输入在第一行给出一个正整数N(≤1000),是该用户点赞的博文数量。随后N行,每行给出一篇被其点赞的博文的特性描述,格式为“K F1⋯FK”,其中1≤K≤10,Fi(i=1,⋯,K)是特性标签的编号,我们将所有特性标签从1到1000编号。数字间以空格分隔。
输出格式:
统计所有被点赞的博文中最常出现的那个特性标签,在一行中输出它的编号和出现次数,数字间隔1个空格。如果有并列,则输出编号最大的那个。
输入样例:
4 3 889 233 2 5 100 3 233 2 73 4 3 73 889 2 2 233 123
输出样例:
233 3
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int main(){
int n;
cin>>n;
int arr1[1002]={0},s,k;
//和上一题类似,编号作为数组下标并将此时数组值++
for(int i=0;i<n;i++){
cin>>k;
for(int j=0;j<k;j++){
cin>>s;
arr1[s]++;
}
}
//开始寻找最大的数组值即次数,和下标
int max_num=arr1[0],max_index=0;//次数,编号
for(int i=1;i<1002;i++){
if(max_num<=arr1[i]){
max_num=arr1[i];
max_index=i;//此时隐含了,当二者次数相等时,
//要编号大的那一个
}
}
cout<<max_index<<" "<<max_num<<endl;
return 0;
}
L1-035 情人节
以上是朋友圈中一奇葩贴:“2月14情人节了,我决定造福大家。第2个赞和第14个赞的,我介绍你俩认识…………咱三吃饭…你俩请…”。现给出此贴下点赞的朋友名单,请你找出那两位要请客的倒霉蛋。
输入格式:
输入按照点赞的先后顺序给出不知道多少个点赞的人名,每个人名占一行,为不超过10个英文字母的非空单词,以回车结束。一个英文句点
.
标志输入的结束,这个符号不算在点赞名单里。输出格式:
根据点赞情况在一行中输出结论:若存在第2个人A和第14个人B,则输出“A and B are inviting you to dinner...”;若只有A没有B,则输出“A is the only one for you...”;若连A都没有,则输出“Momo... No one is for you ...”。
输入样例1:
GaoXZh Magi Einst Quark LaoLao FatMouse ZhaShen fantacy latesum SenSen QuanQuan whatever whenever Potaty hahaha .
输出样例1:
Magi and Potaty are inviting you to dinner...
输入样例2:
LaoLao FatMouse whoever .
输出样例2:
FatMouse is the only one for you...
输入样例3:
LaoLao .
输出样例3:
Momo... No one is for you ...
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int main(){
string str1[1000];
int cnt=0;
//注意是怎么读取的,还有要注意的是,字符串只能和字符串比较,
//所以判断结束标志时2,用双引号,不是单引号
while(cin>>str1[cnt]){
if(str1[cnt++]==".")break;
}
//根据条件输出
if(cnt<3) cout<<"Momo... No one is for you ...";
else if(cnt<14)cout<<str1[1]<<" is the only one for you...";
else cout<<str1[1]<<" and "<<str1[13]<<" are inviting you to dinner...";
return 0;
}