输出一个数学与数据科学学院(软件学院)社管中心科技部的Logo,做为打开MJUPC编程挑战系列赛大门的敲门砖。
此题为签到题,没有难度,但因Logo字符画中包含一些转义字符,需要逐行输出,比较麻烦费时,细心即可。
下面是本题题解C代码,代码19行“Ycnjt///tv+”处有11个“/” ,由于“/t”转义字符的原因此行不能正常显示,提交测试时要注意检查此行。
#includeint main(void)
{
printf(" .'^\"\"\"\"^''\n");
printf(" `;>-}|/jrxnuuunrjt(}_i:^. \n");
printf(" ^>}/xvzzzzcccccccccccczzzzvnj(-l`\n");
printf(" :-/uzzzccvcczzzzzcvvvvvvczzzzccczzcx(<^\n");
printf(" '>\\vXzcvcczzcur/1?+>l:,,,,:li+[|rvzcvvczzn(-I' \n");
printf(" `?rzzcvczzcr(-l^ .'`\"\"\". ';_fzcvvvczzzu)!. \n");
printf(" .+xzcvcczv/_: .,i?)/rnczXUUJ/ .>rzvvvvvvzJCn-` \n");
printf(" !fzcvczcf_\" '!}fcUCCCCCCJJJJJCu. ^jcvvvvvcnvCCc_. \n");
printf(" '}czvvzc(I ^+tXCCCJJJJJJJJJJJJJCv' >zvvvvvvvtnJCLr; \n");
printf(" ^/Xcvcz\\; I|YLCJJJJJJJJJJJJJJJJJJX^ ,vcvvvvvcf/xJJCY~ \n");
printf(" ^fzvvcv~ ljJLJJJJJJJJJJJJJJJJJJJJJJI izvvvvvcutt/nJJCC~ \n");
printf(" .(Xvvzn;^|JCJJJJJJJJJJJJJJJJJJJJJJJC! ./zvvvvcvjttttYJJCU; \n");
printf(" izvvcv;;cLJJJJJJJJJJJJJJJJJJJJJJJJJCi .{zvvvvcvjtttt/vCJJCr. \n");
printf(" \\zvvX-lYCJJJJJJJJJJJJJUYzcunnxnuvXUQ_ `1zcvvccufttttttnJJJJL+ \n");
printf(" `ncvcv+XCJJJJJJJJJJYcnjt///tv+ ljzcvccurttttttt/nJJJJCj \n");
printf(" \"vcvvvUCJJJJJJJJYvj/\\\\/t\\[+<>i><_?{|{' `>(czccvnjttttttttt/zJJJJCX` \n");
printf(" ;ccvvzJJJJJJJJzx/\\\\tnn1!^ '''\"l_(nzzvuxjfttttttttttfrJJJJJCY^ \n");
printf(" 'xcvvXJJJJJJXr\\\\txzCxI !}{)|/rnvvuxjjftttttttttttttj{tCJJJJCn. \n");
printf(" {XvvXJJJJJu/\\tuUJL|' ?rjrrjjftttttttttttttttttttj{:cCJJJJQ[ \n");
printf(" \"ucvzJJJJr\\/nUCJCj. [ftttttttttttttttttttttttff?'/LJJJJCc^ \n");
printf(" ]XvcUJCu\\/cJJJJC! .(ftttttttttttttttttttttfj)l )LJJJJJJi \n");
printf(" '/XvXJU/\\cJJJJJJ: '\\fttttttttttttttttttfff)>.'\\LJJJJCJ+ \n");
printf(" ^fXcUX|xCJJJJJC_ ,tftttttttttttttttfjj\\]I lnLJJJJCY> \n");
printf(" `(zzXjYJJJJJJCc: ;jtttttttttttfffjf|]!' :)UCJJJJLr; \n");
printf(" +xzczJJJJJJJCz?` !rjfffffffjjf/([<:' I\\YLJJJJCX?. \n");
printf(" ^[uzXJJJJJJJJCc)!' '<[1(|(){]_>;^ :?rJCJJJJLU(\" \n");
printf(" \"]nYJJJJJJJJJCJv\\-l\"' .^I+)nUCCJJJCLY(; \n");
printf(" \"]jXCCCJJJJJJCCCJYvr/)}]?_?[})\\ruXJCCCJJJCCCv}, \n");
printf(" .:](fnczYUUUUUUYXcurt)]
题目二:水仙花数水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身,例如:
1
3
+
5
3
+
3
3
=
153
3
3
+
7
3
+
0
3
=
370
3
3
+
7
3
+
1
3
=
371
4
3
+
0
3
+
7
3
=
407
1^{3}+5^{3}+3^{3}=153\qquad3^{3}+7^{3}+0^{3}=370\qquad3^{3}+7^{3}+1^{3}=371\qquad4^{3}+0^{3}+7^{3}=407
13+53+33=15333+73+03=37033+73+13=37143+03+73=407
水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。
下面是本题题解C++代码,题目解法不唯一,供大家交流参考:
#include"iostream"
#include"cmath"
using namespace std;
int main() {
int n;
cin>>n;
int m=(n/100)*(n/100)*(n/100)+((n/10)%10)*((n/10)%10)*((n/10)%10)+(n%10)*(n%10)*(n%10);
if(m==n){
cout<<"yes";
}else{
cout<<"no";
}
}
题目三:一元二次方程求解
此
题
需
注
意
输
出
格
式
,
只
有
一
个
解
时
输
出
x
即
可
,
有
两
个
解
时
需
输
出
x
1
x
2
(
x
1
<
x
2
)
,
且
需
保
留
两
位
小
数
输
出
。
此题需注意输出格式,只有一个解时输出x即可,有两个解时需输出x_1 \quad x_2(x_1
使
一
元
二
次
方
程
左
右
两
边
相
等
的
未
知
数
的
值
叫
做
一
元
二
次
方
程
的
解
,
也
叫
做
一
元
二
次
方
程
的
根
。
求
根
公
式
为
x
=
−
b
±
b
2
−
4
a
c
2
a
使一元二次方程左右两边相等的未知数的值叫做一元二次方程的解,也叫做一元二次方程的根。 求根公式为x=\frac {-b±\sqrt {b^{2}-4ac}}{2a}
使一元二次方程左右两边相等的未知数的值叫做一元二次方程的解,也叫做一元二次方程的根。求根公式为x=2a−b±b2−4ac
下面是本题题解C++代码,题目解法不唯一,供大家交流参考:
#include"iostream"
#include"cmath"
using namespace std;
int main() {
double a,b,c;
scanf("%lf %lf %lf",&a,&b,&c);
double d=b*b-4*a*c;
if(d<0){
cout<<"NO";
} else if(d==0){
printf("%0.2f",(-b+ sqrt(d))/(2*a));
}else{
printf("%0.2f %0.2f",min((-b- sqrt(d))/(2*a),(-b+ sqrt(d))/(2*a)),max((-b- sqrt(d))/(2*a),(-b+ sqrt(d))/(2*a)));
}
}
题目四:成绩排序给出学生姓名和成绩,现在请你将他们按照成绩从低到高的顺序排列有序。
此题需注意输入、输出格式,第一行输入N表示要录入N个学生的信息,后面N行输入N个学生的姓名(字符串)与成绩(以空格隔开),输出时需输出N行数据,每行一个字符串和一个数字,用冒号隔开,表示学生的姓名和成绩,输出的成绩要保留1位小数,若成绩相同则按输入时的先后顺序输出。
数
据
范
围
为
N
≤
1
0
5
,
姓
名
字
符
串
长
度
不
超
过
10
,
成
绩
的
范
围
为
[
0
,
100
]
。
数据范围为 N ≤ {10^{5}},姓名字符串长度不超过10,成绩的范围为[0,100]。
数据范围为N≤105,姓名字符串长度不超过10,成绩的范围为[0,100]。
由于N的范围较大,使用冒泡排序时间复杂度太高,会导致超时问题;使用选择排序也无法通过此题,选择排序为不稳定排序,不能保证成绩相同时按照输入的先后顺序输出;需要使用时间复杂度为N(nlogn)的稳定排序算法,这里选择使用归并排序来解决此题。
下面是本题题解C++代码,题目解法不唯一,供大家交流参考:
#include"iostream"
using namespace std;
struct Grade{
double grade;
char name[15];
}grades[100005],temp[100005];
void merge_sort(int l,int r){
if(l>=r)
return;
int mid=(l+r)>>1;
merge_sort(l,mid), merge_sort(mid+1,r);
int i=l,j=l,k=mid+1;
while (i<=mid&&k<=r){
if(grades[i].grade<=grades[k].grade)temp[j++]=grades[i++];
else temp[j++]=grades[k++];
}
while (i<=mid)temp[j++]=grades[i++];
while (k<=r)temp[j++]=grades[k++];
for (int m = l; m<= r; ++m) {
grades[m]=temp[m];
}
}
int main() {
int N;
scanf("%d",&N);
for (int i = 0; i< N; ++i) {
scanf("%lf %s",&grades[i].grade,&grades[i].name);
}
merge_sort(0,N-1);
for (int i = 0; i< N; ++i) {
printf("%s:%.1lf\n",grades[i].name,grades[i].grade);
}
}
题目五:统计字符现给出一段由大写字母组成的字符串,要求你输出每个大写字母出现的次数,其中未出现的字母不需要输出,输出的顺序为A~Z。
格式要求输入一串由大写字母组成的字符串,输出时按A~Z顺序逐行输出,并在字母后标明此字母出现次数(以冒号隔开)。
下面是本题题解C++代码,题目解法不唯一,供大家交流参考:
#includeusing namespace std;
int a[26];
int main(){
string s;
cin>>s;
for(char i:s)
a[i-'A']++;
for(int i=0;i<26;i++){
if(a[i]){
cout<<(char)('A'+i)<<':'<
题目六:天干地支干支纪年,是指中国纪年历法,自上古以来就一直使用的纪年方法。干支是天干和地支的总称。把干支顺序相配正好六十为一周,周而复始,循环记录,这就是俗称的“干支表”。干支纪年以每年以立春进入下一年。
下表为干支次序表:
01甲子 | 02乙丑 | 03丙寅 | 04丁卯 | 05戊辰 | 06己巳 | 07庚午 | 08辛未 | 09壬申 | 10癸酉 |
---|---|---|---|---|---|---|---|---|---|
11甲戌 | 12乙亥 | 13丙子 | 14丁丑 | 15戊寅 | 16己卯 | 17庚辰 | 18辛巳 | 19壬午 | 20癸未 |
21甲申 | 22乙酉 | 23丙戌 | 24丁亥 | 25戊子 | 26己丑 | 27庚寅 | 28辛卯 | 29壬辰 | 30癸巳 |
31甲午 | 32乙未 | 33丙申 | 34丁酉 | 35戊戌 | 36己亥 | 37庚子 | 38辛丑 | 39壬寅 | 40癸卯 |
41甲辰 | 42乙巳 | 43丙午 | 44丁未 | 45戊申 | 46己酉 | 47庚戌 | 48辛亥 | 49壬子 | 50癸丑 |
51甲寅 | 52乙卯 | 53丙辰 | 54丁巳 | 55戊午 | 56己未 | 57庚申 | 58辛酉 | 59壬戌 | 60癸亥 |
每十年天干循环一轮,每十二年地支循环一轮,用年份取余后输出即可。
#include"iostream"
using namespace std;
int main(){
int N;
scanf("%d",&N);
while (N--) {
string s[10] = {"jia", "yi", "bing", "ding", "wu", "ji", "geng", "xin", "ren", "gui"};
string s1[12] = {"zi", "chou", "yin", "mao", "chen", "si", "wu", "wei", "shen", "you", "xu", "hai"};
int year;
scanf("%d",&year);
cout<< s[(year + 6) % 10]<< s1[(year + 8) % 12]<<"\n";
}
}
题解编辑:枫_0329
题解代码:o0kangkang0o
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧