所以谁能告诉我L1-1的题意qwq
L1-2
题意:给定一个长度为L的,仅由小写字母组成的字符串,问所有字符串中字典序第n大的字符串是什么?
输入格式:一行两个正整数L,n。2≤L≤6,n≤105。
输出格式:一个长度为L的,仅由小写字母组成的字符串。
算法:如果”a”对应数字0,”b”对应数字”1”,以此类推,”z”对应数字25。把这个字符串看做是26进制的自然数。
#include<bits/stdc++.h>
using namespace std;
int main()//pow(26,6)=308915776
{
int l,n;
cin>>l>>n;
int number=1;
for(int i=1;i<=l;++i)number*=26;
number-=n;//第n个字符串对应的数字
char digit[26];//数码映射到字符
for(int i=0;i<26;++i)digit[i]=i+'a';
string str;
if(!number){//特判字符串仅由字母"a"组成的情况
while(l--)cout<<'a';
return 0;
}
while(number){
str=digit[number%26]+str;
number/=26;
}
cout<<setw(l)<<setfill('a')<<str;//前导0要补足
return 0;
}
L1-3
题意:给定原价与折扣数,输出现价。
输入格式:一行两个正整数n,k。k∈[1,9],n≤10000
输出格式:一个浮点数,保留两位小数。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
printf("%.2lf",a*b*0.1);
return 0;
}
L1-4
题意:输出如下内容:
2018
wo3 men2 yao4 ying2 !
输入格式:无输入。
输出格式:见上。
#include<bits/stdc++.h>
using namespace std;
int main()
{
printf("2018\nwo3 men2 yao4 ying2 !");
return 0;
}
L1-5
题意,输入正整数a,b,输出(a+b)次的字符串”Wang!”。
输入格式:一行两个正整数a,b。a,b≤9。
输出格式:一行字符串。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
for(int i=0;i<a+b;++i){
cout<<"Wang!";
}
return 0;
}
L1-6
题意:给定一个n×n的仅由字符和空格组成的方阵,现将其进行中心对称变换后,判断变化后的矩阵是否和原矩阵一样。并输出变化后的矩阵。
输入格式:第一行一个字符c和一个正整数n,分别表示输出的方阵中字符部分用字符c代替,和方阵规模。
接下来n行是一个n×n的方阵,字符部分用”@”表示。n \leq 100。
输出格式:如果变换后的矩阵与原矩阵相同,输出一行”bu yong dao le”,否则不输出。接着输出变换后的方阵。
//代码来源:http://www.ishenping.com/ArtInfo/1572960.html
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, count = 0;
char ch, a[1000][1000], b[1000][1000];
scanf("%c%d", &ch, &n);
getchar();
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
scanf("%c", &a[i][j]);
getchar();
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
b[i][j] = a[n - 1 - i][n - 1 - j];
if (a[i][j] == b[i][j])
count++;
if (b[i][j] == '@')
b[i][j] = ch;
}
}
if (count == n * n)
printf("bu yong dao le\n");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
printf("%c", b[i][j]);
printf("\n");
}
return 0;
}
顺便一提,做完这题我学会了方阵的输入方法。
int n;//方阵规模
char a[N][N];//方阵
getchar();
for(int i=0;i<n;++i){
for(int j=0;j<n;++j){
scanf("%c",&a[i][j]);
}
getchar();
}
L1-7
题意:选秀节目中,有两个候选人a,b。观众和3为评委分别为他们投票。如果候选人a的观众得票数大于b的,且获得至少一位评委的票,则a获胜。如果候选人a获得3位评委全部的票,则无视观众的票数,直接获胜。反之亦然。
输入格式:第一行两个正整数P_a,P_b,表示a、b获得的观众票数。a,b \leq 1000且a+b \equiv 1 \pmod{2}
第二行三个自然数x,y,z,代表评委投票。等于0时表示投给a,等于1时表示投给b。
输出格式:”The winner is x: P1 + P2”,其中x表示获胜的人,P1表示胜者获得的观众票数,P2表示胜者获得的评委总票数。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int audience1,audience2,judge1,judge2,judge3;
cin>>audience1>>audience2>>judge1>>judge2>>judge3;
if(judge1+judge2+judge3==0)printf("The winner is a: %d + 3",audience1);
else if(judge1+judge2+judge3==3)printf("The winner is b: %d + 3",audience2);
else{
if(audience1>audience2)printf("The winner is a: %d + %d",audience1,(judge1==0)+(judge2==0)+(judge3==0));
else printf("The winner is a: %d + %d",audience2,(judge1==1)+(judge2==1)+(judge3==1));
}
return 0;
}
L1-8
题意:n个人说一个小于100的正整数,谁说的数字最接近平均数的一半谁就获胜。保证胜者只有一个。
输入格式:第一行输入一个正整数n。
接下来n行,每行一个仅由英文字母组成的字符串s_i和一个正整数a_i,表示名字为s_i的人说的数字是a_i。|s_i| \leq 8,a_i \leq 100。
输出格式:一行内输出一个正整数和一个字符串,分别表示平均数的一半和胜者的名字。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
vector<string> person[111];//person[i]表示说的数字是i的人的名字,因为可能不止一个,所以用vector<string>存
int average=0;
for(int i=0;i<n;++i){
string name;
int score;
cin>>name>>score;
person[score].push_back(name);
average+=score;
}
average=average/n/2;
int i=average,j=average;
while(1){
if(i>=0){
if(person[i].size()){
cout<<average<<' '<<person[i][0];
return 0;
}
}
if(j<=100){
if(person[j].size()){
cout<<average<<' '<<person[j][0];
return 0;
}
}
i-=(i>=0);
j+=(j<=100);
}
return 0;
}
掉头发不可怕,可怕的是啥也不会,%%%