概述
解题后记:
1.题是好题,虽然简单,都是学习C语言程序设计必学的内容。
2.通用化编程往往没有得到重视,尤其是初学的时候。
3.结构化程序设计非常重要,需要从开始就把握。
4.代码不仅要简洁,而且要极其简洁。
5.逻辑结构清晰也非常重要,需要时时注意。
A题:
接:https://ac.nowcoder.com/acm/contest/1877/A
来源:牛客网
小乐乐学编程
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld题目描述
小乐乐的编程老师BoBo,经常告诉小乐乐“学习编程最好的办法就是上机实践,因为你要对计算机下指令,想让计算机帮你干活,就得多和计算机‘交流’,实践才能出真知。”
输入描述:
无
输出描述:
Practice makes perfect!
AC的C语言程序如下:
#include <stdio.h>
int main(void)
{
printf("Practice makes perfect!n");
return 0;
}
B题:
链接:https://ac.nowcoder.com/acm/contest/1877/B
来源:牛客网
小乐乐算平均分
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小乐乐输入三科成绩,请编程帮他输出三科成绩总分及平均分。
输入描述:
一行,3科成绩(浮点数),成绩之间用一个空格隔开。
输出描述:
一行,总分和平均分(小数点后保留两位),用一个空格隔开。
示例1
输入
79.5 80.0 98.0
输出
257.50 85.83
AC的C语言程序如下:
#include <stdio.h>
int main(void)
{
double a, b, c, sum;
scanf("%lf%lf%lf", &a, &b, &c);
sum = a + b + c;
printf("%.2f %.2fn", sum, sum / 3.0);
return 0;
}
C题:
链接:https://ac.nowcoder.com/acm/contest/1877/C
来源:牛客网
小乐乐找最大数
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小乐乐获得4个最大数,请帮他编程找到最大的数。
输入描述:
一行,4个整数,用空格分开。
输出描述:
一行,一个整数,为输入的4个整数中最大的整数。
示例1
输入
5 8 2 5
输出
8
解题后记:条件运算符使得程序变得简洁,if语句是浮云。
AC的C语言程序如下:
#include <stdio.h>
#define N 4
int main(void)
{
int a, maxa, i;
scanf("%d", &a);
maxa = a;
for(i = 2; i <= N; i++) {
scanf("%d", &a);
maxa = a > maxa ? a : maxa;
}
printf("%dn", maxa);
return 0;
}
AC的C语言程序如下:
#include <stdio.h>
#include <limits.h>
#define N 4
int main(void)
{
int a, maxa, i;
maxa = INT_MIN;
for(i = 1; i <= N; i++) {
scanf("%d", &a);
maxa = a > maxa ? a : maxa;
}
printf("%dn", maxa);
return 0;
}
D题:
链接:https://ac.nowcoder.com/acm/contest/1877/D
来源:牛客网
小乐乐是否被叫家长
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小乐乐的班级进行了一次期中考试,考试一共有3门科目:数学,语文,英语,小乐乐的班主任决定给没有通过考核的同学家长开一次家长会,考核的标准是三科平均分不低于60分,所以现在想请你帮忙算一算小乐乐会不会被叫家长。
输入描述:
一行,输入三个整数(表示小乐乐的数学、语文、英语的成绩),用空格分隔。
输出描述:
一行,如果小乐乐会被请家长则输出“YES”,否则输出“NO”。
示例1
输入
80 60 50
输出
NO
示例2
输入
70 55 40
输出
YES
解题后记:能用整数计算就不用浮点数计算。
AC的C语言程序如下:
#include <stdio.h>
#define N 3
#define PASS 60 * N
int main(void)
{
int a, sum, i;
sum = 0;
for(i = 1; i <= N; i++) {
scanf("%d", &a);
sum += a;
}
printf(sum < PASS ? "YESn" : "NOn");
return 0;
}
AC的C语言程序如下:
#include <stdio.h>
#define N 3
#define PASS 60
int main(void)
{
int a, sum, i;
sum = 0;
for(i = 1; i <= N; i++) {
scanf("%d", &a);
sum += a;
}
printf(sum / N < PASS ? "YESn" : "NOn");
return 0;
}
E题:
链接:https://ac.nowcoder.com/acm/contest/1877/E
来源:牛客网
小乐乐转换成绩
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小乐乐输入百分制成绩,他想将成绩转换成等级制。转换规则为:90-100为’A’,80-89为’B’,70-79为’C’,60-69为’D’,59以下为’E’。如果输入的成绩不在0-100之间,输出’F’。
输入描述:
一行,一个整数表示的成绩。
输出描述:
一行,转换后的等级。
示例1
输入
78
输出
C
解题后记:查表法是伟大的,其他都是浮云!
参考链接:HDU2004 成绩转换【入门】
AC的C语言程序如下:
#include <stdio.h>
int main(void)
{
int score;
char convert[] = "EEEEEEDCBAA";
scanf("%d", &score);
if(0 <= score && score <= 100)
printf("%cn", convert[score/10]);
else
printf("Fn");
return 0;
}
F题:
链接:https://ac.nowcoder.com/acm/contest/1877/F
来源:牛客网
小乐乐算多少人被请家长
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小乐乐的班主任想统计一下班级里一共有多少人需要被请家长,三个成绩(语文,数学,外语)平均分低于60的将被请家长,小乐乐想编程帮助班主任算一下有多少同学被叫家长。
输入描述:
共n+1行
第一行,输入一个数n,代表小乐乐的班级中有n个同学。
在接下来的n行中每行输入三个整数代表班级中一个同学的三科成绩(语文,数学,外语),用空格分隔。
输出描述:
一行,一个整数,代表班级中需要被请家长的人数。
示例1
输入
3
80 100 90
40 70 65
20 84 93
输出
1
AC的C语言程序如下:
#include <stdio.h>
#define N 3
#define PASS 60 * N
int main(void)
{
int n, a, sum, cnt = 0, i;
scanf("%d", &n);
while(n--) {
sum = 0;
for(i = 1; i <= N; i++) {
scanf("%d", &a);
sum += a;
}
if(sum < PASS) cnt++;
}
printf("%dn", cnt);
return 0;
}
G题:
链接:https://ac.nowcoder.com/acm/contest/1877/G
来源:牛客网
小乐乐算最高分
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小乐乐的老师BoBo想知道班级中谁的程序设计基础成绩最高,请编程帮他实现。
输入描述:
共n+1行
第一行输入一个数n,代表小乐乐的班级中n个同学。
第二行输入n个数,用空格相隔,代表班级中每个人的数学成绩。
输出描述:
一个整数,代表班级中最高的数学成绩。
示例1
输入
3
99 89 39
输出
99
AC的C语言程序如下:
#include <stdio.h>
int main(void)
{
int n, a, maxa, i;
maxa = 0;
scanf("%d", &n);
for(i = 1; i <= n; i++) {
scanf("%d", &a);
maxa = a > maxa ? a : maxa;
}
printf("%dn", maxa);
return 0;
}
H题:
链接:https://ac.nowcoder.com/acm/contest/1877/H
来源:牛客网
小乐乐计算求和
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小乐乐想计算一下1!+2!+3!+…+n!。
输入描述:
一行,一个整数n。
输出描述:
一行,一个整数,表示1!+2!+3!+…+n!的结果。
示例1
输入
3
输出
9
备注:
结果范围在int类型范围之内
解题后记:
1.有备无患,还是用long long类型。
2.迭代是最为常用的计算过程。
3.乘积变量的初值,通常设置为1 。
AC的C语言程序如下:
#include <stdio.h>
int main(void)
{
long long sum = 0, ai = 1;
int n, i;
scanf("%d", &n);
for(i = 1; i <= n; i++) {
ai *= i;
sum += ai;
}
printf("%lldn", sum);
return 0;
}
AC的C语言程序如下:
#include <stdio.h>
long long fact(int n)
{
long long ret = 1;
int i;
for(i = 1; i <= n; i++)
ret *= i;
return ret;
}
int main(void)
{
long long sum = 0;
int n, i;
scanf("%d", &n);
for(i = 1; i <= n; i++)
sum += fact(i);
printf("%lldn", sum);
return 0;
}
I题:
链接:https://ac.nowcoder.com/acm/contest/1877/I
来源:牛客网
小乐乐计算函数
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小乐乐学会了自定义函数,BoBo老师给他出了个问题,根据以下公式计算m的值。
其中 max3函数为计算三个数的最大值,如: max3(1, 2, 3) 返回结果为3。
输入描述:
一行,输入三个整数,用空格隔开,分别表示a, b, c。
输出描述:
一行,一个浮点数,小数点保留2位,为计算后m的值。
示例1
输入
1 2 3
输出
0.30
解题后记:写一个算得快的程序,比起用函数,用带参数的宏定义才是王道!
AC的C语言程序如下:
#include <stdio.h>
#define MAX3(x, y, z) (((x) > (y)) ? (((x) > (z)) ? (x) : (z)) : (((y) > (z))? (y) : (z)))
int main(void)
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
printf("%.2fn", (double) MAX3(a + b, b, c) / (MAX3(a, b + c, c) + MAX3(a, b, b + c)));
return 0;
}
AC的C语言程序如下:
#include <stdio.h>
#define MAX(x, y) ((x) > (y) ? (x) : (y))
#define MAX3(x, y, z) MAX(MAX(x, y), z)
int main(void)
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
printf("%.2fn", (double) MAX3(a + b, b, c) / (MAX3(a, b + c, c) + MAX3(a, b, b + c)));
return 0;
}
AC的C语言程序如下:
#include <stdio.h>
int max3(int x, int y, int z)
{
if (x > y) {
if (x > z) return x;
else return z;
} else {
if( y > z) return y;
else return z;
}
}
int main(void)
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
printf("%.2fn", (double) max3(a + b, b, c) / (max3(a, b + c, c) + max3(a, b, b + c)));
return 0;
}
J题:
链接:https://ac.nowcoder.com/acm/contest/1877/J
来源:牛客网
小乐乐查找数字
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
给定n个整数和一个整数x,小乐乐想从n个整数中判断x出现几次,请编程帮他实现。
输入描述:
共3行
第一行,一个整数,表示n(1 <= n <= 100)。
第二行,共输入n个整数,两个整数之间用空格分隔。
第三行,输入一个整数,表示要查找的整数x。
输出描述:
一行,表示整数x出现的次数。
示例1
输入
5
1 1 2 1 3
1
输出
3
解题后记:求和或统计的变量,初值通常设置为0 。
AC的C语言程序如下:
#include <stdio.h>
#define N 100
int a[N];
int main(void)
{
int n, x, i;
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
scanf("%d", &x);
int cnt = 0;
for(i = 0; i < n; i++)
if(a[i] == x) cnt++;
printf("%dn", cnt);
return 0;
}
K题:
链接:https://ac.nowcoder.com/acm/contest/1877/K
来源:牛客网
小乐乐与进制转换
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小乐乐在课上学习了二进制八进制与十六进制后,对进制转换产生了浓厚的兴趣。因为他的幸运数字是6,所以他想知道一个数表示为六进制后的结果。请你帮助他解决这个问题。
输入描述:
输入一个正整数n (1 ≤ n ≤ 109)
输出描述:
输出一行,为正整数n表示为六进制的结果
示例1
输入
6
输出
10
示例2
输入
120
输出
320
解题后记:进制转换问题,计算时通常取出各位数字放在字符数组中,然后再逆序一下。这里给出另外一种解法,数值比较小时尚可计算。
AC的C语言程序如下:
#include <stdio.h>
#define BASE 6
int main(void)
{
int n;
long long w = 1, ans = 0;
scanf("%d", &n);
while(n) {
ans += n % BASE * w;
w *= 10;
n /= BASE;
}
printf("%lldn", ans);
return 0;
}
L题:
链接:https://ac.nowcoder.com/acm/contest/1877/L
来源:牛客网
小乐乐求和
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小乐乐最近接触了求和符号Σ,他想计算的结果。但是小乐乐很笨,请你帮助他解答。
输入描述:
输入一个正整数n (1 ≤ n ≤ 109)
输出描述:
输出一个值,为求和结果。
示例1
输入
1
输出
1
示例2
输入
10
输出
55
AC的C语言程序如下:
#include <stdio.h>
int main(void)
{
int n;
scanf("%d", &n);
printf("%lldn", (long long) n * (n +1) / 2);
return 0;
}
AC的C语言程序如下:
#include <stdio.h>
int main(void)
{
int n, i;
long long sum;
scanf("%d", &n);
for(i = 1, sum = 0; i <= n; i++)
sum += i;
printf("%lldn", sum);
return 0;
}
M题:
链接:https://ac.nowcoder.com/acm/contest/1877/M
来源:牛客网
小乐乐定闹钟
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小乐乐比较懒惰,他现在想睡觉,然后再去学习。他知道现在的时刻,以及自己要睡的时长,想设定一个闹钟叫他起床学习,但是他太笨了,不知道应该把闹钟设定在哪个时刻,请你帮助他。(只考虑时和分,不考虑日期)
输入描述:
输入现在的时刻以及要睡的时长k(单位:minute),中间用空格分开。
输入格式:hour:minute k(如hour或minute的值为1,输入为1,而不是01)
(0 ≤ hour ≤ 23,0 ≤ minute ≤ 59,1 ≤ k ≤ 109)
输出描述:
对于每组输入,输出闹钟应该设定的时刻,输出格式为标准时刻表示法(即时和分都是由两位表示,位数不够用前导0补齐)。
示例1
输入
0:0 100
输出
01:40
示例2
输入
1:0 200
输出
04:20
AC的C语言程序如下:
#include <stdio.h>
int main(void)
{
int h, m, k;
scanf("%d:%d%d", &h, &m, &k);
h += (m + k) / 60;
h %= 24;
m = (m + k) % 60;
printf("%02d:%02dn", h, m);
return 0;
}
N题:
链接:https://ac.nowcoder.com/acm/contest/1877/N
来源:牛客网
小乐乐排电梯
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小乐乐学校教学楼的电梯前排了很多人,他的前面有n个人在等电梯。电梯每次可以乘坐12人,每次上下需要的时间为4分钟(上需要2分钟,下需要2分钟)。请帮助小乐乐计算还需要多少分钟才能乘电梯到达楼上。(假设最初电梯在1层)
输入描述:
输入包含一个整数n (0 ≤ n ≤ 109)
输出描述:
输出一个整数,即小乐乐到达楼上需要的时间。
示例1
输入
1
输出
2
示例2
输入
12
输出
6
AC的C语言程序如下:
#include <stdio.h>
int main(void)
{
int n, ans, t1, t2;
scanf("%d", &n);
t1 = (n + 1) / 12;
t2 = (n + 1) % 12;
if(t1 == 0) ans = 2;
else if(t2 == 0) ans = (t1 - 1) * 4 + 2;
else ans = t1 * 4 + 2;
printf("%dn", ans);
return 0;
}
O题:
链接:https://ac.nowcoder.com/acm/contest/1877/O
来源:牛客网
小乐乐与欧几里得
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小乐乐最近在课上学习了如何求两个正整数的最大公约数与最小公倍数,但是他竟然不会求两个正整数的最大公约数与最小公倍数之和,请你帮助他解决这个问题。
输入描述:
每组输入包含两个正整数n和m。(1 ≤ n ≤ 109,1 ≤ m ≤ 109)
输出描述:
对于每组输入,输出一个正整数,为n和m的最大公约数与最小公倍数之和。
示例1
输入
10 20
输出
30
示例2
输入
15 20
输出
65
解题后记:
1.类型还是使用无符号长长整形比较保险。
2.直接套用模板函数比较简单。
AC的C语言程序如下:
#include <stdio.h>
typedef unsigned long long ULL;
ULL gcd(ULL m, ULL n)
{
return n ? gcd(n, m % n) : m;
}
ULL lcm(ULL m, ULL n)
{
return m / gcd(m, n) * n ;
}
int main(void)
{
int n, m;
scanf("%d%d", &n, &m);
printf("%lldn", gcd(n, m) + lcm(n, m));
return 0;
}
AC的C++语言程序如下:
#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ULL;
ULL lcm(ULL m, ULL n)
{
return m / __gcd(m, n) * n ;
}
int main(void)
{
int n, m;
scanf("%d%d", &n, &m);
printf("%llun", __gcd(n, m) + lcm(n, m));
return 0;
}
P题:
链接:https://ac.nowcoder.com/acm/contest/1877/P
来源:牛客网
小乐乐改数字
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小乐乐喜欢数字,尤其喜欢0和1。他现在得到了一个数,想把每位的数变成0或1。如果某一位是奇数,就把它变成1,如果是偶数,那么就把它变成0。请你回答他最后得到的数是多少。
输入描述:
输入包含一个整数n (0 ≤ n ≤ 109)
输出描述:
输出一个整数,即小乐乐修改后得到的数字。
示例1
输入
222222
输出
0
示例2
输入
123
输出
101
AC的C语言程序如下:
#include <stdio.h>
#define BASE 10
int main(void)
{
int n, w = 1, ans = 0;
scanf("%d", &n);
while(n) {
if( n % BASE % 2 == 1)
ans += w;
w *= BASE;
n /= BASE;
}
printf("%dn", ans);
return 0;
}
Q题:
链接:https://ac.nowcoder.com/acm/contest/1877/Q
来源:牛客网
小乐乐走台阶
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小乐乐上课需要走n阶台阶,因为他腿比较长,所以每次可以选择走一阶或者走两阶,那么他一共有多少种走法?
输入描述:
输入包含一个整数n (1 ≤ n ≤ 30)
输出描述:
输出一个整数,即小乐乐可以走的方法数。
示例1
输入
2
输出
2
示例2
输入
10
输出
89
AC的C语言程序如下:
#include <stdio.h>
long long fib(int n)
{
if(n == 1) return 1;
else if(n == 2) return 2;
else return fib(n - 2) + fib(n - 1);
}
int main(void)
{
int n;
scanf("%d", &n);
printf("%lldn", fib(n));
return 0;
}
R题:
链接:https://ac.nowcoder.com/acm/contest/1877/R
来源:牛客网
小乐乐与序列
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
老师给了小乐乐一个正整数序列,要求小乐乐把这个序列去重后按从小到大排序。但是老师给出的序列太长了,小乐乐没办法耐心的去重并排序,请你帮助他。
输入描述:
第一行包含一个正整数n,表示老师给出的序列有n个数。接下来有n行,每行一个正整数k,为序列中每一个元素的值。(1 ≤ n ≤ 105,1 ≤ k ≤ n)
输出描述:
输出一行,为去重排序后的序列,每个数后面有一个空格。
示例1
输入
4
2
2
1
1
输出
1 2
示例2
输入
5
5
4
3
2
1
输出
1 2 3 4 5
AC的C语言程序如下:
#include <stdio.h>
#include <string.h>
#define N 100000
int cnt[N + 1];
int main(void)
{
int n, a, i;
scanf("%d", &n);
memset(cnt, 0, sizeof(cnt));
for(i = 1; i <= n; i++) {
scanf("%d", &a);
cnt[a]++;
}
for(i = 1; i <= n; i++)
if(cnt[i]) printf("%d ", i);
printf("n");
return 0;
}
S题:
链接:https://ac.nowcoder.com/acm/contest/1877/S
来源:牛客网
小乐乐与字符串
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
在庆祝祖国母亲70华诞之际,老师给小乐乐出了一个问题。大家都知道China的英文缩写是CHN,那么给你一个字符串s,你需要做的是统计s中子串“CHN”的个数。
子串的定义:存在任意下标a < b < c,那么“s[a]s[b]s[c]”就构成s的一个子串。如“ABC”的子串有“A”、“B”、“C”、“AB”、“AC”、“BC”、“ABC”。
输入描述:
输入只包含大写字母的字符串s。(1 ≤ length ≤ 8000)
输出描述:
输出一个整数,为字符串s中字串“CHN”的数量。
示例1
输入
CCHNCHN
输出
7
示例2
输入
CCHNCHNCHNCHN
输出
30
AC的C语言程序如下:
#include <stdio.h>
#include <string.h>
#define N 8000
char s[N + 1];
int main(void)
{
long long ccnt, hcnt, ncnt;
int i;
scanf("%s", s);
ccnt = hcnt = ncnt = 0;
for(i = 0; s[i]; i++)
if(s[i] == 'C') ccnt++;
else if(s[i] == 'H') hcnt += ccnt;
else if(s[i] == 'N') ncnt += hcnt;
printf("%lldn", ncnt);
return 0;
}
TLE的C语言程序如下:
#include <stdio.h>
#include <string.h>
#define N 8000
char s[N + 1];
int main(void)
{
int cnt, len, i, j, k;
scanf("%s", s);
cnt = 0;
len = strlen(s);
for(i = 0; i < len - 2; i++)
if(s[i] == 'C')
for(int j = i + 1; j < len - 1; j++)
if(s[j] == 'H')
for(k = j + 1; k < len; k++)
if(s[k] == 'N') cnt++;
printf("%dn", cnt);
return 0;
}
T题:
链接:https://ac.nowcoder.com/acm/contest/1877/T
来源:牛客网
小乐乐与二段数
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
小乐乐从老师口中听到了二段数这个名词,想更深入的了解二段数。
二段数是这样的正整数:恰好包含两种不同的十进制数字s和t,s不是0,并且s的所有出现均排列在所有的t的前面。例如,44444411是二段数(s是4,t是1),41、10000000和5555556也是。但4444114和44444都不是二段数。
这时老师问小乐乐:给你一个任意的正整数n,你能求出比n大并且是n的倍数的最小二段数吗?请你帮助小乐乐解答这个问题。
输入描述:
多组输入,每组输入包含一个正整数n (1 ≤ n ≤ 99999)
题目保证测试数据总数不超过500组,当输入n=0时程序结束。
输出描述:
对于每组测试用例,输出正整数n,后面紧跟“: ”,输出答案并换行,即比n大且是n的倍数的最小二段数。
示例1
输入
1
2019
0
输出
1: 10
2019: 9999999993
AC的C语言程序如下:
TLE的C语言程序如下:
#include <stdio.h>
#define BASE 10
int judge(long long n)
{
int cnt = 1, d, r;
d = n % BASE;
n /= BASE;
while(n) {
r = n % BASE;
if(r != d) {
if(++cnt > 2) break;
d = r;
}
n /= BASE;
}
return cnt == 2;
}
int main(void)
{
long long n, ans, k;
while(~scanf("%lld", &n) && n) {
k = 2;
for(;;) {
ans = n * k++;
if(judge(ans)) break;
}
printf("%lld: %lldn", n, ans);
}
return 0;
}
链接:小乐乐与二段数(2019哈理工新生赛第20题)
最后
以上就是淡然鸵鸟为你收集整理的2019哈理工新生赛题解的全部内容,希望文章能够帮你解决2019哈理工新生赛题解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复