刷题记录
#algorithm/coding
首字母缩略词
题目描述
有一种简单的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,其余非字母的字符不变,则可得到一个简单的加密字符串 |
输入
输入一行字符串(可能包含空格),长度小于80个字符。 |
代码
|
字符串排序
题目描述
输入一组字符串,不超过100个,将输入的字符串按照升序排列并输出(每行一个) |
输入
每行输入一个字符串(即:每个字符串以换行符号作为结束)每个字符串长度不超过25 |
代码
|
杨辉三角
题目描述
输入非负整数N(0≤N≤30),输出杨辉三角。 |
输入
4 |
输出
1 |
代码
|
奇数阶幻方
题目描述
幻方(Magic Square)是一种中国传统游戏,游戏要求将1~N2的数值安排在正方形格子中,使每行、列和对角线上的相加之和都相等 |
输入
正整数N(N≤19) |
输出
奇数阶幻方,幻方中的每个数值占4格,右对齐,每行以\n结尾。输出格式详见样例 |
|
字符串简单加密
题目描述
有一种简单的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,其余非字母的字符不变,则可得到一个简单的加密字符串 |
输入
输入一行字符串(可能包含空格),长度小于80个字符 |
输出
输出加密后的字符串 |
|
交换最小值和最大值
题目描述
本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。 |
输入
输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔 |
输出
在一行中顺序输出交换后的序列,每个整数后跟一个空格 |
输入样例:
5 |
输出样例:
1 2 5 4 8 |
|
求一批整数中出现最多的个位数字
给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次 |
输入格式:
输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔 |
输出格式:
在一行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格 |
输入样例:
3 |
输出样例:
3: 3 4 |
题解:
|
【函数】判断正整数N(N>1)是否为素数
题目描述
对于正整数N(1<N<10000),如果N只能被1和N整除,则N为素数,否则N为合数 |
裁判测试程序样例:
|
输入
输入一个正整数N(1<N<10000)。测试数据有多组,处理到输入结束 |
输出
如果是素数,则输出"prime",否则输出“composite” |
样例输入
2 |
样例输出
prime |
题解:
int isPrime(int n){ |
【函数】自定义函数:利用辗转相除法求最大公约数
题目描述
本题要求实现一个自定义函数:利用辗转相除法求最大公约数。 |
裁判测试程序样例:
|
辗转相除法,是目前已知最古老的算法, 可追溯至公元前300年。
它首次出现于欧几里德(Euclidean)的《几何原本》(第VII卷,命题i和ii)中,在中国可以追溯至东汉时期的《九章算术》
辗转相除法计算两个正整数a和b的最大公约数,步骤描述如下:
- (1) 如果b为0则最大公约数为a,算法结束
- (2) 令r为a÷b所得余数
- (3) 令a←b,b←r,并返回步骤(1)
输入
输入正整数a,b; |
输出
输出a和b的最大公约数,每个输出占1行。 |
样例输入
24 60 |
样例输出
12 |
题解:
int gcd(int a,int b) |
【函数】自定义函数:正整数第K位的数字
题目描述
本题要求实现一个自定义函数:返回值为正整数n的第k位的数字(从右向左数)。 |
输入
正整数n,k |
输出
n的第k位数字,每个输出占1行 |
样例输入
54321 1 |
样例输出
1 |
裁判测试程序样例:
|
题解:
int getK(int n, int k){ |
【函数】十进制转二进制
题目描述
输入一个十进制数N(32位整数),将它转换成二进制数输出。 要求用函数实现,并提交该函数定义。 |
裁判测试程序样例:
|
输入
输入数据包含多个测试实例,每个测试实例包含1个整数N(32位整数) |
输出
输出转换后的数,每个输出占1行 |
样例输入
55 |
样例输出
110111 |
题解:
void decToBin(int n){ |
【函数】十进制转成R进制
题目描述
输入一个十进制数N(32位整数),将它转换成R(2<=R<=16)进制数输出。 |
函数接口定义:
//输入一个十进制数,转换为R进制并输出 |
裁判测试程序样例:
|
输入
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16) |
输出
输出转换后的数。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等) |
样例输入
23 12 |
样例输出
1B |
题解:
void decToR(int n,int r){ |
【函数】组合数函数及阶乘函数
题目描述
利用阶乘函数计算组合数 |
本题要求实现2个自定义函数:求组合数函数和求阶乘函数。 |
函数接口定义:
int comb(int m,int n); |
裁判测试程序样例:
|
输入
测试数据有多组,处理到输入结束。 |
输出
每行一个输出结果。 |
样例输入
6 3 |
样例输出
20 |
题解:
int comb(int m,int n){ |
输出前 n 个Fibonacci数
本题要求编写程序,输出菲波那契(Fibonacci)数列的前N项,每行输出5个,题目保证输出结果在长整型范围内。Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列,例如:1,1,2,3,5,8,13,... |
输入格式:
输入在一行中给出一个整数N(1≤N≤46) |
输出格式:
输出前N个Fibonacci数,每个数占11位,每行输出5个。如果最后一行输出的个数不到5个,也需要换行 |
输入样例1:
7 |
输出样例1:
1 1 2 3 5 |
输入样例2:
0 |
输出样例2:
Invalid. |
题解:
|
输出m到n之间的全部素数
本题要求输出给定整数M和N区间内的全部素数,每行输出10个。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。 |
输入格式:
输入在一行中给出两个正整数*M*和*N*(1≤*M*≤*N*≤500)。 |
输出格式:
输出素数,每个数占6位,每行输出10个。如果最后一行输出的素数个数不到10个,也需要换行 |
输入样例1:
2 100 |
输出样例1:
2 3 5 7 11 13 17 19 23 29 |
输入样例2:
6 2 |
输出样例2:
Invalid. |
题解:错误的
|
//正确的 |
穷举问题-搬砖
某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块。如果想用n人正好搬n块砖,问有多少种搬法? |
输入格式:
输入在一行中给出一个正整数n。 |
输出格式:
输出在每一行显示一种方案,按照"`men = cnt_m, women = cnt_w, child = cnt_c`"的格式,输出男人的数量cnt_m,女人的数量cnt_w,小孩的数量cnt_c。请注意,等号的两侧各有一个空格,逗号的后面也有一个空格。 |
输入样例:
45 |
输出样例:
men = 0, women = 15, child = 30 |
题解:
|
【递归】求阶乘
利用递归函数求阶乘 |
long long fac(int); |
裁判测试程序样例:
|
输入
输入正整数n(n<=20) |
输出
每行一个输出结果 |
样例输入
1 |
样例输出
1 |
题解:
long long fac(int x){ |
【递归】用递归求x的n次方
本题要求实现1个自定义函数:求x的n次方(已知x为实数,n为自然数) |
函数接口定义:
double mypow(double,int); |
裁判测试程序样例:
|
输入
从键盘,输入x,n,测试数据有多组,处理到文件结尾 |
输出
输出x的n次方,结果保留3位小数 |
样例输入
10 2 |
样例输出
100.000 |
题解:
double mypow(double s,int r){ |
【递归】输出m和n之间的所有整数
本题要求实现一个递归函数:按照从小到大顺序输出m和n之间的所有整数(包括m和n) |
函数接口定义:
void print(int m,int n); |
裁判测试程序样例:
|
输入
输入整数m和n(-10<=m<=10,-10<=n<=10); |
输出
按照从小到大顺序输出m和n之间的所有整数(包括m和n),2个整数之间用空格隔开; |
样例输入
3 -3 |
样例输出
-3 -2 -1 0 1 2 3 |
题解:
void print(int m,int n){ |
【递归】求组合数
题目描述
本题要求实现1个自定义函数:求组合数函数。 |
函数接口定义:
int comb(int m,int n); |
裁判测试程序样例:
|
输入
测试数据有多组,处理到输入结束 |
输出
每行一个输出结果 |
样例输入
6 3 |
样例输出
20 |
提示:
题解:
int comb(int m,int n){ |
【递归】利用辗转相除法求最大公约数
本题要求实现一个递归函数:利用辗转相除法求最大公约数 |
函数接口定义:
int gcd(int a, int b); |
裁判测试程序样例:
|
辗转相除法,是目前已知最古老的算法, 可追溯至公元前300年。 |
输入
输入正整数a,b; |
输出
输出a和b的最大公约数,每个输出占1行 |
样例输入
24 60 |
样例输出
12 |
题解:
int gcd(int a, int b){ |
走楼梯
题目描述
楼梯有n级台阶,上楼可以一步上一阶,也可以一步上二阶。编一程序,计算共有多少种不同走法? |
输入
输入n(n<=50) |
输出
输出走法的总数 |
样例输入
3 |
样例输出
3 |
题解:
|
【递归】汉诺塔(Haono)问题
题目描述
汉诺塔(又称河内塔)问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的柱子A、B和C,A上面套着n个圆的金片, 最大的一个在底下,其余一个比一个小,依次叠上去, 庙里的众僧不倦地把它们一个个地从A柱搬到C柱上,规定可利用中间的一根B柱作为帮助, 但每次只能搬一个, 而且大的不能放在小的上面。 僧侣们搬得汗流满面,可惜当n很大时这辈子恐怕就搬不完了。 |
函数接口定义:
//将n个圆盘从A柱移到C柱上去(借助B柱) |
裁判测试程序样例:
|
输入
输入金片的个数n(n>=1并且n<=10),测试数据有多组,处理到文件结尾 |
输出
输出搬动金片的全过程。每组输出结果后,都空一行,格式见样例输出 |
样例输入
2 |
样例输出
move 1# from A to B |
题解:
【递归】十进制转二进制
题目描述
输入一个十进制数N(32位整数),将它转换成二进制数输出 |
函数接口定义:
//输入一个十进制数,转换为2进制并输出 |
裁判测试程序样例:
|
输入
输入数据包含多个测试实例,每个测试实例包含1个整数N(32位整数) |
输出
输出转换后的数,每个输出占1行 |
样例输入
55 |
样例输出
110111 |
题解:
void decToBin(int n){ |
【递归】十进制转成R进制
题目描述
输入一个十进制数N(32位整数),用递归算法将它转换成R(2<=R<=16)进制数输出。 |
函数接口定义:
//输入一个十进制数,转换为R进制并输出 |
裁判测试程序样例:
|
输入
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16)。 |
输出
输出转换后的数。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等) |
样例输入
23 12 |
样例输出
1B |
题解:
void decToR(int n,int m){ |
【递归】分梨
题目描述
阿布喜欢吃梨,有一天妈妈买了一筐梨子。小伙伴们来做客,他想和小伙伴们一起分享。现在他要把m个梨放到n个盘子里面 (我们允许有的盘子为空),你能告诉阿布有多少种分法吗?(请注意,如果有三个盘子,我们将5,1,1和1,1,5,视为同一种分法) |
函数接口定义:
//用递归算法求m个梨放在n个盘子里的方法总数 |
裁判测试程序样例:
|
输入
第一行是一个整数t,代表有t组样例 |
输出
输出有多少种方法 |
样例输入
1 |
样例输出
8 |
提示
m个梨放在n个盘子,允许有盘子空,按层次可以划分成如下的子问题 |
题解:
int f(int m,int n) |
使用函数计算两点间的距离
本题要求实现一个函数,对给定平面任意两点坐标(x1,y1)和(x2,y2),求这两点之间的距离 |
函数接口定义:
double dist( double x1, double y1, double x2, double y2 ); |
其中用户传入的参数为平面上两个点的坐标(x1
, y1
)和(x2
, y2
),函数dist
应返回两点间的距离。
裁判测试程序样例:
|
输入样例:
10 10 200 100 |
输出样例:
dist = 210.24 |
输入样例:
10 10 200 100 |
输出样例:
dist = 210.24 |
题解:
double dist( double x1, double y1, double x2, double y2 ){ |
符号函数
本题要求实现符号函数sign(x)
函数接口定义:
int sign( int x ); |
其中x
是用户传入的整型参数。符号函数的定义为:若x
大于0,sign(x)
= 1;若x
等于0,sign(x)
= 0;否则,sign(x)
= −1。
裁判测试程序样例:
|
输入样例:
10 |
输出样例:
sign(10) = 1 |
题解:
int sign(int x){ |
使用函数求1到10的阶乘和
本题要求实现一个计算非负整数阶乘的简单函数,使得可以利用该函数,计算1!+2!+⋯+10!的值。
函数接口定义:
double fact( int n ); |
其中n
是用户传入的参数,其值不超过10。如果n
是非负整数,则该函数必须返回n
的阶乘。
裁判测试程序样例:
|
输入样例:
本题没有输入 |
输出样例:
1!+2!+...+10! = 4037913.000000 |
题解:
double fact(int n){ //这题梦幻的一匹??? |
使用函数判断完全平方数
本题要求实现一个判断整数是否为完全平方数的简单函数。
函数接口定义:
int IsSquare( int n ); |
其中n
是用户传入的参数,在长整型范围内。如果n
是完全平方数,则函数IsSquare
必须返回1,否则返回0。
裁判测试程序样例:
|
输入样例1:
90 |
输出样例1:
NO |
输入样例2:
100 |
输出样例2:
YES |
题解:
int IsSquare( int n ){ |
使用函数求素数和
本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。
素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。
函数接口定义:
int prime( int p ); |
其中函数prime
当用户传入参数p
为素数时返回1,否则返回0;
函数PrimeSum
返回区间[m
, n
]内所有素数的和。题目保证用户传入的参数m
≤n
。
裁判测试程序样例:
|
输入样例:
-1 10 |
输出样例:
Sum of ( 2 3 5 7 ) = 17 |
题解:
int prime( int p ){ |
数字金字塔
本题要求实现函数输出n行数字金字塔。
函数接口定义:
void pyramid( int n ); |
其中n
是用户传入的参数,为[1, 9]的正整数。要求函数按照如样例所示的格式打印出n
行数字金字塔。
注意每个数字后面跟一个空格。
裁判测试程序样例:
|
输入样例:
5 |
输出样例:
1 |
题解:
void pyramid( int n ){ |
使用函数计算两个复数之积
若两个复数分别为:c1=x1+y1i
和c2=x2+y2i
,则它们的乘积为c1×c2=(x1x2−y1y2)+(x1y2+x2y1)i
。
本题要求实现一个函数计算两个复数之积。
函数接口定义:
double result_real, result_imag; |
其中用户传入的参数为两个复数x1
+y1
_i_和x2
+y2
_i_;函数complex_prod
应将计算结果的实部存放在全局变量result_real
中、虚部存放在全局变量result_imag
中。
裁判测试程序样例:
|
输入样例:
1 2 |
输出样例:
product of complex is (4.000000)+(-7.000000)i |
题解:
void complex_prod( double x1, double y1, double x2, double y2 ){ |
使用函数求最大公约数
本题要求实现一个计算两个数的最大公约数的简单函数。
函数接口定义:
int gcd( int x, int y ); |
其中x
和y
是两个正整数,函数gcd
应返回这两个数的最大公约数。
裁判测试程序样例:
|
输入样例:
32 72 |
输出样例:
8 |
题解:
使用函数统计指定数字的个数
本题要求实现一个统计整数中指定数字的个数的简单函数。
函数接口定义:
int CountDigit( int number, int digit ); |
其中number
是不超过长整型的整数,digit
为[0, 9]区间内的整数。函数CountDigit
应返回number
中digit
出现的次数。
裁判测试程序样例:
|
输入样例:
-21252 2 |
输出样例:
Number of digit 2 in -21252: 3 |
题解:
int CountDigit( int number, int digit ){ |
使用函数求余弦函数的近似值
本题要求实现一个函数,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e
:
cos(x)=x^0/0!−x^2/2!+x^4/4!−x^6/6!+⋯
函数接口定义:
double funcos( double e, double x ); |
其中用户传入的参数为误差上限e
和自变量x
;函数funcos
应返回用给定公式计算出来、并且满足误差要求的cos(x)
的近似值。
输入输出均在双精度范围内。
裁判测试程序样例:
|
输入样例:
0.01 -3.14 |
输出样例:
cos(-3.14) = -0.999899 |
题解:
统计某类完全平方数
本题要求实现一个函数,判断任一给定整数N
是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
函数接口定义:
int IsTheNumber ( const int N ); |
其中N
是用户传入的参数。如果N
满足条件,则该函数必须返回1,否则返回0。
裁判测试程序样例:
|
输入样例:
105 500 |
输出样例:
cnt = 6 |
题解:
/* 你的代码将被嵌在这里 */ |
【函数的指针参数】交换2个实数
用指针变量作为函数形参,编写函数实现2个实数的交换
函数接口定义:
void mySwap(double*,double*); |
裁判测试程序样例:
|
输入
测试数据有多组,处理到输入结束 |
输出
输出交换后的2个实数,保留2位小数。 |
样例输入
3.5 5.25 |
样例输出
5.25 3.50 |
题解:
void mySwap(double* m,double* n){ |
【函数的指针参数】数组排序
题目描述
使用自定义函数
void sort(int *a, int n); |
对数组a中的整数进行排序(升序)
函数的参数:a为数组(指针),n为数组中元素的个数。
裁判程序如下:
|
输入
一组整数(不超过10个),每个整数的绝对值不超过1000,读取到输入结束 |
输出
按升序输出,每行一个 |
样例输入
3 1 4 1 5 9 |
样例输出
1 |
题解:
void sort(int *a, int n){ |
星星球
题目描述
蚂蚁庄园里的星星球游戏,大部分人都接触过。看好友榜单里,大家的分数都很高,但是这些分数需要多少次点击组合才能实现呢? |
输入
两个整数n和m,n代表得到的分数(1≤n≤5000),m代表点击次数(1≤m≤500) |
输出
输出解的个数 |
样例输入
【测试样例1】 |
样例输出
【测试样例1】 |
提示
对于样例,需要得到50分,总共有8种方法
对于样例1,总点击次数不能超过20次,所以有8种方案,输出8; 对于样例2,总点击次数不能超过5次,所以有1种方案,输出1; 对于样例3,总点击次数不能超过2次,所以有0种方案,输出-1。
题解:
合并整数
题目描述
有n个整数,相同的两个整数可以合并成一个更大的整数。合并可以一直进行下去,直到没有相同的整数为止
请求出合并完成后最大的整数
输入
第一行给定一个整数n(1≤n≤1000),第二行给定n个空格分割的整数x(1≤x≤1000)
输出
输出合并完成后最大的整数
**样例输入 **
9 |
样例输出
28 |
提示
第一步,5和5合并成10,得到整数数列3 10 7 12 13 20 7 14 |
题解:
|
【函数的指针参数】日期问题
题目描述
输入年和天数,输出对应的月和日。例如:输入2000和61,输出3和1。
函数接口定义:
void month_day(int,int,int*,int*); |
裁判测试程序样例:
|
输入
输入年和天数;测试数据有多组,处理到输入结束。
输出
输出对应的月和日。
每个输出占1行。
样例输入
2010 1 |
样例输出
1-1 |
题解:
void month_day(int year,int yearday,int *pmonth,int *pday){ |
【函数的指针参数】自定义字符串长度函数 my_strlen
题目描述
编写自定义函数int my_strlen(char* s); 检测字符串s的长度 |
特别提示:不允许使用“string.h”中的strlen函数。
裁判程序如下:
|
输入
一行字符串(长度不超过100)
输出
字符串的长度
样例输入
abc |
样例输出
3 |
题解:
int my_strlen(char* s){ |
【字符串函数】ispalindrome
题目描述
编写自定义函数int ispalindrome(char* s); |
裁判测试程序如下:
|
输入
一行字符串(长度不超过100) |
输出
如果输入字符串为回文,则输出yes |
样例输入
rotator |
样例输出
yes |
题解:
int ispalindrome(char* s){ |
【函数的指针参题目描述
本题要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。
函数接口定义:
void strmcpy( char *t, int m, char *s ); |
函数strmcpy
将输入字符串char *t
中从第m个字符开始的全部字符复制到字符串char *s
中。
若m超过输入字符串的长度,则结果字符串应为空串。
输入
输入m和字符串t,字符串长度不超过20个字符
输出
输出复制后的字符串
样例输入
7 |
样例输出
new year |
题解:
void strmcpy( char *t, int m, char *s ){ |
手机
题目描述
一般的手机的键盘是这样的:
要按出英文字母就必须要按数字键多下。
例如要按出 x
就得按 9 两下,第一下会出 w
,而第二下会把 w
变成 x
。0 键按一下会出一个空格。
你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。
输入格式
一行句子,只包含英文小写字母和空格,且不超过 200 个字符。
输出格式
一行一个整数,表示按键盘的总次数。
样例
样例输入
i have a dream |
样例输出
23 |
提示
NOI导刊2010普及(10)
题解:
链接:https://ac.nowcoder.com/acm/contest/11227/B
来源:牛客网
减法和除法
鸡尾酒的学生丹丹分不清除法和减法,因为他觉得两种运算都是将一个数字变小,所以都差不多。
为了让丹丹能够更好地理解除法和减法,鸡尾酒给了他这样一个问题:
给定一个正整数 n
,每次有两种操作:
- 使得这个数字除以
2
(由于丹丹没学过小数和分数,所以这里是除法是整除,向下取整) - 将这个数字减去一个给定值
x
。
问最少几次操作可以将这个数字变成一个小于等于零的数字。
由于丹丹从未接触过负数,所以根本不知道小于等于零的数字是什么,你可以帮帮他吗?
输入描述:
给定两个正整数 n,x(1≤n,x≤109)n,x(1 \leq n,x \leq 10^9)n,x(1≤n,x≤109) |
输出描述:
输出一行一个整数表示答案 |
输入
30 5 |
输出
4 |
说明
先进行一次操作 1,得到 15,再进行三次操作 2(即减去 5),此时得到 0。或者先进行两次操作 1,得到 7,再进行两次操作 2,得到 -2。这两种方案都是 4 次操作。 |
题解:
|
【结构体】成绩统计
题目描述
有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩。读入这10个学生的数据,要求输出3门课程的总平均成绩,以及个人平均分最高的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。
输入
共有10行,每行包含了一个学生的学号(整数)、名字(长度不超过19的无空格字符串)和3门课程的成绩(0至100之间的整数),用空格隔开。
输出
第一行包含了3个实数,分别表示3门课程的总平均成绩,保留2位小数,每个数之后输出一个空格。
第二行输出个人平均分最高的学生的数据,与输入数据格式相同。如果有多位个人平均分最高的学生,输出按照输入顺序第一个最高分的学生数据。
请注意行尾输出换行。
样例输入
101 AAA 80 81 82 |
样例输出
85.60 87.90 90.40 |
题解:
|
学生成绩排序
题目描述
输入一组学生的成绩,按照成绩降序输出成绩表。如有相同成绩,较小的学号排位靠前
输入
输入格式为每行两个数值,学号N为10位数字,成绩S取值为整数(0≤S≤100)
读取输入直到输入结束(数据总量不超过50行,且不会出现重复的学号)
输出
输出格式为每行两个数值,学号N之后有一个空格,成绩值的输出宽度占3个位置
样例输入
2017010405 78 |
样例输出
2017010377 95 |
题解:
|
【结构体】日期统计
题目描述
定义一个包括年、月、日的结构体变量,读入年、月、日,计算该日在当年中是第几天。注意闰年问题。
输入
三个整数,分别表示年、月、日。保证输入是实际存在的日期,且年份在1000至3000之间(包含1000和3000)。
输出
输出该日期是一年中的第几天。
请注意行尾输出换行。
样例输入
2012 12 21 |
样例输出
356 |
题解:
|
|
晨跑次数统计
题目描述
某学校为鼓励学生锻炼身体,要求学生周一到周五早晨在操场跑步,并进行刷卡记录,作为期末评优的依据。
刷卡机器中记录的数据格式为学号和刷卡时间,其中学号N
为10
位数字,时间T
格式为yyyymmddhhmmss
读卡程序确保每天不会多次记录同一名学生的晨跑刷卡时间
要求:根据刷卡机器中记录的学生刷卡记录,按照学号升序统计学生晨跑次数
输入
输入格式为每行两个数值,学号N与时间T之间有一个空格 。
读取输入直到输入结束(数据总量不超过1000行)
输出
输出格式为每行两个数值,学号以及相应的晨跑次数,两者之间有一个空格。
样例输入
2015016932 20160311065532 |
样例输出
2015016932 1 |
题解:
|
IDENTITY V
Yuki最近迷上了一款叫作IDENTITY V(第五人格)的游戏,六一节快到了,游戏也推出了一个活动。在活动期间,使用不同的角色参与对战,根据玩家在该局游戏中的表现会给予该角色相应的演绎积分,当演绎积分到达2000时,可以兑换相应角色的动态头像。该游戏现有的典型角色如下:
Yuki十分想要得到动态头像,每个玩家只能获得一个角色的动态头像,如果某一角色的积分足够,他会立即兑换。请根据Yuki在活动期间的对战情况,看看Yuki能够得到哪个角色的头像。
输入
第一行输入一个数T(T≤7),表示Yuki玩这个游戏的天数。接下来是T组数据。
每组数据的第一行是一个整数n(n≤20),表示当天玩的局数,接下来是n行数据,每行数据中包含一个字符串s(长度不超过20)代表Yuki当局使用的角色和一个整数g(g<1000)表示Yuki获得的演绎值。
输出
如果Yuki能够获得某一角色的所有奖励,则将该角色输出;如果不能获得任何角色的奖励,则输出“NOTHING”(不包含引号)
样例输入
【测试样例1】 |
样例输出
【测试样例1】 |
题解:
|
性感素数
“性感素数 ”是指形如 (p,p+6)
这样的一对素数。
之所以叫这个名字,是因为拉丁语管六
叫sex
(即英语的“性感”)。
现给定一个整数,请你判断其是否为一个性感素数。
输入格式
输入在一行中给出一个正整数 N
。
输出格式
若 N
是一个性感素数,则在一行中输出 Yes
,并在第二行输出与N
配对的另一个性感素数(若这样的数不唯一,输出较小的那个)。
若 NN 不是性感素数,则在一行中输出 No
,然后在第二行输出大于N
的最小性感素数。
输入样例1:
47 |
输出样例1:
Yes |
输入样例2:
21 |
输出样例2:
No |
题解:
|
菱形图案
题目描述
从键盘输入一个整数n(1≤n≤30),打印出指定的菱形。
输入
正整数n(1≤n≤30)。
输出
指定的菱形。
第一行前面有n-1个空格,第二行有n-2个空格,以此类推。
样例输入
3 |
样例输出
* |
题解:
|
Counterclockwise Rotation
Problem Statement
In an x y-coordinate plane whose x_x_-axis is oriented to the right and whose y_-axis is oriented upwards, rotate a point (a,b) around the origin d_ degrees counterclockwise and find the new coordinates of the point.
Constraints
- −1000≤a,_b_≤1000
- 1≤_d_≤360
- All values in input are integers.
Input
Input is given from Standard Input in the following format:
a b d |
Output
Let the new coordinates of the point be (_a_′,_b_′). Print _a_′ and _b_′ in this order, with a space in between.
Your output will be considered correct when, for each value printed, the absolute or relative error from the answer is at most 10^-6.
Sample Input 1
2 2 180 |
Sample Output 1
-2 -2 |
When (2,2) is rotated around the origin 180180 degrees counterclockwise, it becomes the symmetric point of (2,2) with respect to the origin, which is (−2,−2).
Sample Input 2
5 0 120 |
Sample Output 2
-2.49999999999999911182 4.33012701892219364908 |
When (5,0) is rotated around the origin 120120 degrees counterclockwise, it becomes (-5/2 , 5\sqrt(3)/2)(−25,253).
This sample output does not precisely match these values, but the errors are small enough to be considered correct.
Sample Input 3
0 0 11 |
Sample Output 3
0.00000000000000000000 0.00000000000000000000 |
Since (a,b) is the origin (the center of rotation), a rotation does not change its coordinates.
Sample Input 4
15 5 360 |
Sample Output 4
15.00000000000000177636 4.99999999999999555911 |
A 360-degree rotation does not change the coordinates of a point.
Sample Input 5
-505 191 278 |
Sample Output 5
118.85878514480690171240 526.66743699786547949770 |
source code
|
人见人爱A^B
题目描述
求A^B的最后三位数表示的整数
说明:A^B的含义是“A的B次方”
Input
输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。
Output
对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。
Sample
Input | Output |
---|---|
2 3 | 8 |
12 6 | 984 |
6789 10000 | 1 |
0 0 |
题解
|
人见人爱A+B
题目描述
HDOJ上面已经有10来道A+B的题目了,相信这些题目曾经是大家的最爱,希望今天的这个A+B能给大家带来好运,也希望这个题目能唤起大家对ACM曾经的热爱
这个题目的A和B不是简单的整数,而是两个时间,A和B 都是由3个整数组成,分别表示时分秒,比如,假设A为34 45 56,就表示A所表示的时间是34小时 45分钟 56秒
Input
输入数据有多行组成,首先是一个整数N,表示测试实例的个数,然后是N行数据,每行有6个整数AH,AM,AS,BH,BM,BS,分别表示时间A和B所对应的时分秒。题目保证所有的数据合法
Output
对于每个测试实例,输出A+B,每个输出结果也是由时分秒3部分组成,同时也要满足时间的规则(即:分和秒的取值范围在0~59),每个输出占一行,并且所有的部分都可以用32位整数表示
Sample
Input | Output |
---|---|
2 | 5 7 9 |
1 2 3 4 5 6 | 47 9 30 |
34 45 56 12 23 34 |
题解
|
sort
题目描述
给你n个整数,请按从大到小的顺序输出其中前m大的数。
Input
每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000)
,第二行包含n个各不相同,且都处于区间[-500000,500000]
的整数。
Output
对每组测试数据按从大到小的顺序输出前m大的数。
Sample
Input | Output |
---|---|
5 3 | 213 92 3 |
3 -35 92 213 -644 |
source code
|
CF1703A YES or YES?
There is a string s
of length 3
, consisting of uppercase and lowercase English letters. Check if it is equal to “YES” (without quotes), where each letter can be in any case. For example, “yES”, “Yes”, “yes” are all allowable.
Input
The first line of the input contains an integer t
(1≤t
≤1031≤t
≤103) — the number of testcases.
The description of each test consists of one line containing one string s
consisting of three characters. Each character of s
is either an uppercase or lowercase English letter.
Output
For each test case, output “YES” (without quotes) if s
satisfies the condition, and “NO” (without quotes) otherwise.
You can output “YES” and “NO” in any case (for example, strings “yES”, “yes” and “Yes” will be recognized as a positive response).
Example
Input
10 |
Output
YES |
source code
|
Problem - A - Codeforces
The area
Ignatius bought a land last week, but he didn’t know the area of the land because the land is enclosed by a parabola and a straight line. The picture below shows the area. Now given all the intersectant points shows in the picture, can you tell Ignatius the area of the land? Note: The point P1 in the picture is the vertex of the parabola.
Input
The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.
Each test case contains three intersectant points which shows in the picture, they are given in the order of P1, P2, P3. Each point is described by two floating-point numbers X and Y(0.0<=X,Y<=1000.0).
Output
For each test case, you should output the area of the land, the result should be rounded to 2 decimal places.
Sample
Input | Output |
---|---|
5.000000 5.000000 | 33.33 |
0.000000 0.000000 | 40.69 |
10.000000 0.000000 | |
10.000000 10.000000 | |
1.000000 1.000000 | |
14.000000 8.222222 |
source code
|
Number Sequence
A number sequence is defined as follows:
f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7
Given A, B, and n, you are to calculate the value of f(n).
Input
The input consists of multiple test cases. Each test case contains 3 integers A, B and n on a single line (1 <= A, B <= 1000, 1 <= n <= 100,000,000). Three zeros signal the end of input and this test case is not to be processed.
Output
For each test case, print the value of f(n) on a single line.
Sample
Input | Output |
---|---|
1 1 3 | 2 |
1 2 10 | 5 |
0 0 0 |
source code
|
Fibonacci Again
There are another kind of Fibonacci numbers:
F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2)
Input
Input consists of a sequence of lines, each containing an integer n
. (n < 1,000,000).
Output
Print the word “yes” if 3 divide evenly into F(n)
.
Print the word “no” if not.
Sample
Input Output |
source code
|
Rightmost Digit
Given a positive integer N
, you should output the most right digit of N^N
.
Input
The input contains several test cases. The first line of the input is a single integer T
which is the number of test cases. T
test cases follow.
Each test case contains a single positive integer N
(1<=N<=1,000,000,000).
Output
For each test case, you should output the rightmost digit of N^N
.
Sample
Input Output |
source code
|
整除的尾数
一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢?
Input
输入数据有若干组,每组数据包含二个整数a
,b
(0<a<10000, 10<b<100),若遇到0 0
则处理结束。
Output
对应每组数据,将满足条件的所有尾数在一行内输出,格式见样本输出。同组数据的输出,其每个尾数之间空一格,行末没有空格。
Sample
Input Output |
source code
|
nc37344-L HPU
题目描述
给定一个字符串,请你判断字符串中”HPU”的数目
输入描述:
一行,一个字符串 S ,字符串的长度 1≤∣S∣≤10^7
输出描述:
一行,输出字符串中”HPU”的数目
输入
HHHHHHPU
输出
1
输入
HPUUUHPU
输出
2
source code
|
UVA 1585Score
There is an objective test result such as “OOXXOXXOOO”. An ‘O’ means a correct answer of a problem and an ‘X’ means a wrong answer. The score of each problem of this test is calculated by itself and its just previous consecutive ‘O’s only when the answer is correct. For example, the score of the 10th problem is 3 that is obtained by itself and its two previous consecutive ‘O’s. Therefore, the score of “OOXXOXXOOO” is 10 which is calculated by “1+2+0+0+1+0+0+1+2+3”. You are to write a program calculating the scores of test results.
Input
Your program is to read from standard input. The input consists of T test cases. The number of test cases T is given in the first line of the input. Each test case starts with a line containing a string composed by ‘O’ and ‘X’ and the length of the string is more than 0 and less than 80. There is no spaces between ‘O’ and ‘X’.
Output
Your program is to write to standard output. Print exactly one line for each test case. The line is to contain the score of the test case.
Sample Input
5 |
Sample Output
10 |
source code
|
UVA 455Periodic Strings
A character string is said to have period k if it can be formed by concatenating one or more repetitions of another string of length k. For example, the string ”abcabcabcabc” has period 3, since it is formed by 4 repetitions of the string ”abc”. It also has periods 6 (two repetitions of ”abcabc”) and 12 (one repetition of ”abcabcabcabc”). Write a program to read a character string and determine its smallest period.
Input
The first line oif the input file will contain a single integer N indicating how many test case that your program will test followed by a blank line. Each test case will contain a single character string of up to 80 non-blank characters. Two consecutive input will separated by a blank line.
Output
An integer denoting the smallest period of the input string for each input. Two consecutive output are separated by a blank line.
Sample Input
1 |
Sample Output
2 |
source code
A Unique Letter
Problem Statement
You are given a string S of length 3.
Print a character that occurs only once in S.
If there is no such character, print -1
instead.
ConstraiConstraints
- S is a string of length 3 consisting of lowercase English letters.
Input
Input is given from Standard Input in the following format:
S |
Output
Print the answer. If multiple solutions exist, you may print any of them.
Sample Input 1
pop |
Sample Output 1
o |
o
occurs only once in pop
Sample Input 2
abc |
Sample Output 2
a |
a
, b
, and c
occur once each in abc
, so you may print any of them.
Sample Input 3
xxx |
Sample Output 3
-1 |
No character occurs only once in xxx
.
source code
s=input() |
UVA 1586 Molar mass
An organic compound is any member of a large class of chemical compounds whose molecules contain carbon. The molar mass of an organic compound is the mass of one mole of the organic compound. The molar mass of an organic compound can be computed from the standard atomic weights of the elements.
When an organic compound is given as a molecular formula, Dr.CHON wants to find its molar mass. A molecular formula, such as C3H4O3, identifies each constituent element by its chemical symbol and indicates the number of atoms of each element found in each discrete molecule of that compound. If a molecule contains more than one atom of a particular element, this quantity is indicated using a subscript after the chemical symbol. In this problem, we assume that the molecular formula is represented by only four elements, ‘C’ (Carbon), ‘H’ (Hydrogen), ‘O’ (Oxygen), and ‘N’ (Nitrogen) without parentheses. The following table shows that the standard atomic weights for ‘C’, ‘H’, ‘O’, and ‘N’.
Atomic Name | Carbon | Hydrogen | Oxygen | Nitrogen |
---|---|---|---|---|
Standard Atomic Weight | 12.01 g/mol | 1.008 g/mol | 16.00 g/mol | 14.01 g/mol |
For example, the molar mass of a molecular formula C6H5OH is 94.108 g/mol which is computed by 6 × (12.01 g/mol) + 6 × (1.008 g/mol) + 1 × (16.00 g/mol). Given a molecular formula, write a program to compute the molar mass of the formula.
Input
Your program is to read from standard input. The input consists of T test cases. The number of test cases T is given in the first line of the input. Each test case is given in a single line, which contains a molecular formula as a string. The chemical symbol is given by a capital letter and the length of the string is greater than 0 and less than 80. The quantity number n which is represented after the chemical symbol would be omitted when the number is 1 (2 ≤ n ≤ 99).
Output
Your program is to write to standard output. Print exactly one line for each test case. The line should contain the molar mass of the given molecular formula.
Sample Input
4 |
Sample Output
12.010 |
source code
|
UVA 1225 Digit Counting
Trung is bored with his mathematics homeworks. He takes a piece of chalk and starts writing a sequence of consecutive integers starting with 1 to N (1 < N < 10000). After that, he counts the number of times each digit (0 to 9) appears in the sequence. For example, with N = 13, the sequence is:
12345678910111213 |
In this sequence, 0 appears once, 1 appears 6 times, 2 appears 2 times, 3 appears 3 times, and each digit from 4 to 9 appears once. After playing for a while, Trung gets bored again. He now wants to write a program to do this for him. Your task is to help him with writing this program.
Input
The input file consists of several data sets. The first line of the input file contains the number of data sets which is a positive integer and is not bigger than 20. The following lines describe the data sets. For each test case, there is one single line containing the number N.
Output
For each test case, write sequentially in one line the number of digit 0, 1, . . . 9 separated by a space.
Sample Input
2 |
Sample Output
0 1 1 1 0 0 0 0 0 0 |
source code
|
UVA 10340 All in All
You have devised a new encryption technique which encodes a message by inserting between its characters randomly generated strings in a clever way. Because of pending patent issues we will not discuss in detail how the strings are generated and inserted into the original message. To validate your method, however, it is necessary to write a program that checks if the message is really encoded in the final string.
Given two strings s
and t
, you have to decide whether s
is a subsequence of t
, i.e. if you can remove characters from t
such that the concatenation of the remaining characters is s
.
Input
The input contains several testcases. Each is specified by two strings s
, t
of alphanumeric ASCII characters separated by whitespace. Input is terminated by EOF
.
Output
For each test case output, if s
is a subsequence of t
.
Sample Input
sequence subsequence |
Sample Output
Yes |
source code
|
CF1703B ICPC Balloons
In an ICPC contest, balloons are distributed as follows:
- Whenever a team solves a problem, that team gets a balloon.
- The first team to solve a problem gets an additional balloon.
A contest has 26 problems, labelled A, B, C, …, Z. You are given the order of solved problems in the contest, denoted as a string s, where the i-th character indicates that the problem si has been solved by some team. No team will solve the same problem twice.
Determine the total number of balloons that the teams recieved. Note that some problems may be solved by none of the teams.
Input
The first line of the input contains an integer t (1≤t≤100) — the number of testcases.
The first line of each test case contains an integer n (1≤n≤50) — the length of the string.
The second line of each test case contains a string ss of length n consisting of uppercase English letters, denoting the order of solved problems.
Output
For each test case, output a single integer — the total number of balloons that the teams received.
Example
Input
6 |
Output
5 |
Note
In the first test case, 5
balloons are given out:
- Problem
A
is solved. That team receives2
balloons: one because they solved the problem, an an additional one because they are the first team to solve problemA
. - Problem
B
is solved. That team receives2
balloons: one because they solved the problem, an an additional one because they are the first team to solve problemB
. - Problem
A
is solved. That team receives only1
balloon, because they solved the problem. Note that they don’t get an additional balloon because they are not the first team to solve problemA
.
The total number of balloons given out is 2+2+1=5
.
In the second test case, there is only one problem solved. The team who solved it receives 2
balloons: one because they solved the problem, an an additional one because they are the first team to solve problem A
.
source code
|
AtCoder260 Changing Jewels
Problem Statement
Takahashi has a red jewel of level N. (He has no other jewels.)
Takahashi can do the following operations any number of times.
- Convert a red jewel of level n (n is at least 2) into “a red jewel of level (n_−1) and X blue jewels of level _n*”.
- Convert a blue jewel of level n (n is at least 2) into “a red jewel of level (n_−1) and Y blue jewels of level (_n*−1)”.
Takahashi wants as many blue jewels of level 1 as possible. At most, how many blue jewels of level 1 can he obtain by the operations?
Input
Input is given from Standard Input in the following format:
N X Y |
Output
Print the answer.
Sample Input 1
2 3 4 |
Sample Output 1
12 |
Takahashi can obtain 12 blue jewels of level 1 by the following conversions.
- First, he converts a red jewel of level 2 into a red jewel of level 1 and 3 blue jewels of level 2.
- After this operation, Takahashi has 1 red jewel of level 1 and 3 blue jewels of level 2.
- Next, he repeats the following conversion 3 times: converting a blue jewel of level 2 into a red jewel of level 1 and 4 blue jewels of level 11.
- After these operations, Takahashi has 4 red jewels of level 1 and 12 blue jewels of level 1.
- He cannot perform a conversion anymore.
He cannot obtain more than 12 blue jewels of level 1, so the answer is 12.
Sample Input 2
1 5 5 |
Sample Output 2
0 |
Takahashi may not be able to obtain a blue jewel of level 1.
Sample Input 3
10 5 5 |
Sample Output 3
3942349900 |
Note that the answer may not fit into a 32-bit integer type.
source code
AtCoderA Unique Letter
Problem Statement
You are given a string S of length 3.
Print a character that occurs only once in S*.
If there is no such character, print -1
instead.
Constraints
- S is a string of length 3 consisting of lowercase English letters.
Input
Input is given from Standard Input in the following format:
S |
Output
Print the answer. If multiple solutions exist, you may print any of them.
Sample Input 1
pop |
Sample Output 1
o |
o
occurs only once in pop
.
Sample Input 2
abc |
Sample Output 2
a |
a
, b
, and c
occur once each in abc
, so you may print any of them.
Sample Input 3
xxx |
Sample Output 3
-1 |
No character occurs only once in xxx
.
source code
|
UVA1339 古老的密码
source code
|
UVA489 刽子手游戏
刽子手游戏其实是一款猜单词游戏,游戏规则是这样的:计算机想一个单词 让你猜,你每次可以猜一个字母。如果单词里有 那个字母,所有该字母会显示出来;如果没有那 个字母,则计算机会在一幅“刽子手”画上填一 笔。这幅画一共需要7笔就能完成,因此你最多只能错6次。注意,猜一个已经猜过的字母也算错。
在本题中,你的任务是编写一个“裁判”程 序,输入单词和玩家的猜测,判断玩家赢了 (You win.)、输了(You lose.)还是放弃了 (You chickened out.)。每组数据包含3行,第1 行是游戏编号(-1为输入结束标记),第2行是 计算机想的单词,第3行是玩家的猜测。后两行保证只含小写字母。
样例输入:
1 |
样例输出:
Round 1 |
source code
|
HDU4841 圆桌问题
圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。
Input
多组数据,每组数据输入:好人和坏人的人数n(<=32767)、步长m(<=32767);
Output
对于每一组数据,输出2n个大写字母,‘G’表示好人,‘B’表示坏人,50个字母为一行,不允许出现空白字符。相邻数据间留有一空行。
Sample
Input | Output |
---|---|
2 3 | GBBG |
2 4 | BGGB |
source code
|
HDU1062 Text Reverse
Ignatius likes to write words in reverse way. Given a single line of text which is written by Ignatius, you should reverse all the words and then output them.
Input
The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.
Each test case contains a single line with several words. There will be at most 1000 characters in a line.
Output
For each test case, you should output the text which is processed.
Sample
Input | Output |
---|---|
1 | hello world! |
olleh !dlrow | |
source code
|
Atcoder BC261 Intersection
Problem Statement
We have a number line. Takahashi painted some parts of this line, as follows:
- First, he painted the part from
X=L_1 to X=R_1
red. - Next, he painted the part from
X=L_2 to X=R_2
blue.
Find the length of the part of the line painted both red and blue.
Input
Input is given from Standard Input in the following format:
L_1 R_1 L_2 R_2 |
Output
Print the length of the part of the line painted both red and blue, as an integer.
Sample Input 1
0 3 1 5 |
Sample Output 1
2 |
The part from X=0 to X=3
is painted red, and the part from X=1 to X=5
is painted blue.
Thus, the part from X=1 to X=3
is painted both red and blue, and its length is 2
.
source code
|
Atcoder BC261 Tournament Result
Problem Statement
Nplayers played a round-robin tournament.
You are given an N-by-N table A containing the results of the matches. Let A(i,j) denote the element at the i-th row and j-th column of A.
A(i,j) is -
if i=j
, and W
, L
, or D
otherwise.
A(i,j)is W
if Player i beat Player j, L
if Player i lost to Player j, and D
if Player i
drew with Player j
.
Determine whether the given table is contradictory.
The table is said to be contradictory when some of the following holds:
- There is a pair (i,j) such that Player i beat Player j, but Player j did not lose to Player i;
- There is a pair (i,j) such that Player i lost to Player j, but Player j did not beat Player i;
- There is a pair (i,j) such that Player idrew with Player j, but Player j did not draw with Player i.
Sample Input 1
4 |
Sample Output 1
incorrect |
Player 3 beat Player 4, while Player 4 also beat Player 3, which is contradictory.
source code
|
Atcoder BC261 NewFolder(1)
Problem Statement
For two strings A and B, let A+B denote the concatenation of A and B in this order.
You are given N strings S1,…,SN. Modify and print them as follows, in the order i=1,…, N:
Sample Input 1
5 |
Sample Output 1
newfile |
source code
|
HDU2648 Shopping
Every girl likes shopping,so does dandelion. Now she finds the shop is increasing the price every day because the Spring Festival is coming .She is fond of a shop which is called “memory”. Now she wants to know the rank of this shop’s price after the change of everyday.
Input
One line contains a number n ( n<=10000),stands for the number of shops.
Then n lines ,each line contains a string (the length is short than 31 and only contains lowercase letters and capital letters.)stands for the name of the shop.
Then a line contains a number m (1<=m<=50),stands for the days .
Then m parts , every parts contains n lines , each line contains a number s and a string p ,stands for this day ,the shop p ‘s price has increased s.
Output
Contains m lines ,In the ith line print a number of the shop “memory” ‘s rank after the ith day. We define the rank as :If there are t shops’ price is higher than the “memory” , than its rank is t+1.
Sample
Input
3 |
Output
1 |
source code
|
Ignatius and the Princess II
题目
给定一个从1到N的序列,我们定义1,2,3…N-1,N,是所有可以由1到N组成的序列中最小的序列(每个数字只能使用一次)。 因此,很容易看到第二个最小的序列是1,2,3…N,N-1。 现在我给你两个数字N和M。你应该告诉我第M个最小的序列,它由1到N组成。
输入:每个测试用例均包含两个数字N和M(1 <= N <= 1000,1 <= M <= 10000)。 您可能会假设总是有一个序列满足BEelzebub的需求。 输入在文件末尾终止。
输出:对于每个测试用例,您只需输出满足BEelzebub要求的序列即可。 输出序列时,应在两个数字之间打印一个空格,但不要在最后一个数字之后输出任何空格。
Input
6 4 |
Output
1 2 3 5 6 4 |
source code
|
HDU1716 排列2
Ray又对数字的列产生了兴趣:
现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数。
Input
每组数据占一行,代表四张卡片上的数字(0<=数字<=9),如果四张卡片都是0,则输入结束。
Output
对每组卡片按从小到大的顺序输出所有能由这四张卡片组成的4位数,千位数字相同的在同一行,同一行中每个四位数间用空格分隔。
每组输出数据间空一行,最后一组数据后面没有空行。
Sample
Input
1 2 3 4 |
Output
1234 1243 1324 1342 1423 1432 |
source code
|
UVA-10815 Andy’s First Dictionary
Andy, 8, has a dream - he wants to produce his very own dictionary. This is not an easy task for him, as the number of words that he knows is, well, not quite enough. Instead of thinking up all the words himself, he has a briliant idea. From his bookshelf he would pick one of his favorite story books, from which he would copy out all the distinct words. By arranging the words in alphabetical order, he is done! Of course, it is a really time-consuming job, and this is where a computer program is helpful.
You are asked to write a program that lists all the different words in the input text. In this problem, a word is defined as a consecutive sequence of alphabets, in upper and/or lower case. Words with only one letter are also to be considered. Furthermore, your program must be CaSe InSeNsItIvE. For example, words like “Apple”, “apple” or “APPLE” must be considered the same.
Input
The input file is a text with no more than 5000 lines. An input line has at most 200 characters. Input is terminated by EOF.
Output
Your output should give a list of different words that appears in the input text, one in a line. The words should all be in lower case, sorted in alphabetical order. You can be sure that he number of distinct words in the text does not exceed 5000.
Input
Adventures in Disneyland |
Output
a |
source code
|
N皇后问题
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。
你的任务是,对于给定的N,求出有多少种合法的放置方法。
Input
共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。
Output
共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。
Sample
Input
1 |
Output
1 |
source code
|
/*打表*/ |
additional term
输出每一种方案,每种方案顺序输出皇后所在的列号,若无方案,则输出no solute!
source code
|
HDU1312 Red and Black
There is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. From a tile, he can move to one of four adjacent tiles. But he can’t move on red tiles, he can move only on black tiles.
Write a program to count the number of black tiles which he can reach by repeating the moves described above.
Input
The input consists of multiple data sets. A data set starts with a line containing two positive integers W and H; W and H are the numbers of tiles in the x- and y- directions, respectively. W and H are not more than 20.
There are H more lines in the data set, each of which includes W characters. Each character represents the color of a tile as follows.
‘.’ - a black tile
‘#’ - a red tile
‘@’ - a man on a black tile(appears exactly once in a data set)
Output
For each data set, your program should output a line which contains the number of tiles he can reach from the initial tile (including itself).
Sample
Input
6 9 |
output
45 |
source code
|
Leetcode200 Number of Islands
Given an m x n
2D binary grid grid
which represents a map of '1'
s (land) and '0'
s (water), return the number of islands.
An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water.
Example 1:
Input: grid = [ |
Example 2:
Input: grid = [ |
Constraints:
m == grid.length
n == grid[i].length
1 <= m, n <= 300
grid[i][j]
is'0'
or'1'
.
source code
//参考https://www.youtube.com/watch?v=XSmgFKe-XYU |
取余运算
题目描述
输入b
,p
,k
的值,求b^p mod k
的值(即b的p次方除以k的余数)。其中b
,p
,k*k
为32位整数。
样例输入
2 10 9 |
样例输出
2^10 mod 9=7 |
source code
|
剪绳子
题目描述
有N
根绳子,第i
根绳子长度为Li
,现在需要M
根等长的绳子,你可以对N
根绳子进行任意裁剪(不能拼接),请你帮忙计算出这M
根绳子最长的长度是多少。
输入
第一行包含2个正整数N、M,表示原始绳子的数量和需求绳子的数量。
第二行包含N个整数,其中第 i 个整数Li表示第 i 根绳子的长度。
已知:1≤N,M≤100000, 0<Li<10^9
输出
输出一个数字,表示裁剪后最长的长度,保留两位小数。
样例输入
3 4 |
样例输出
2.50 |
提示
第一根和第三根分别裁剪出一根2.50长度的绳子,第二根剪成2根2.50长度的绳子,刚好4根。
source code
|
Leetcode704 二分查找
给定一个 n
个元素有序的(升序)整型数组 nums
和一个目标值 target
,写一个函数搜索 nums
中的 target
,如果目标值存在返回下标,否则返回 -1
。
示例 1:
输入: nums = [-1,0,3,5,9,12], target = 9 |
示例 2:
输入: nums = [-1,0,3,5,9,12], target = 2 |
提示:
- 你可以假设
nums
中的所有元素是不重复的。 n
将在[1, 10000]
之间。nums
的每个元素都将在[-9999, 9999]
之间。
source code
class Solution { |
ACwing67 数字在排序数组中出现的次数
统计一个数字在排序数组中出现的次数。
例如输入排序数组 [1,2,3,3,3,3,4,5] 和数字 33,由于 33 在这个数组中出现了 44 次,因此输出 44。
数据范围
数组长度 [0,1000]
样例
输入:[1, 2, 3, 3, 3, 3, 4, 5] , 3 |
source code
class Solution |
Leetcode231 2的幂
给你一个整数 n
,请你判断该整数是否是 2 的幂次方。如果是,返回 true
;否则,返回 false
。
如果存在一个整数 x
使得 n == 2x
,则认为 n
是 2 的幂次方。
示例 1:
输入:n = 1 |
示例 2:
输入:n = 16 |
示例 3:
输入:n = 3 |
示例 4:
输入:n = 4 |
示例 5:
输入:n = 5 |
提示:
-2^31 <= n <= 2^31 - 1
source code
/* |
ACwing801 二进制中1的个数
给定一个长度为 n
的数列,请你求出数列中每个数的二进制表示中 1
的个数。
输入格式
第一行包含整数 n
第二行包含 n
个整数,表示整个数列
输出格式
共一行,包含 n
个整数,其中的第 i
个数表示数列中的第 i
个数的二进制表示中 1
的个数
数据范围
1
≤n
≤100000
0
≤数列中元素的值
≤10^9
输入样例:
5 |
输出样例:
1 1 2 1 2 |
source code
|
面试题 16.01. 交换数字
编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。
示例:
输入: numbers = [1,2] |
提示:
numbers.length == 2
-2147483647 <= numbers[i] <= 2147483647
source code
class Solution { |
A+B Problem(高精)
题目描述
高精度加法,相当于 a+b problem,不用考虑负数。
输入格式
分两行输入。a,b \leq 10^{500}a,_b_≤10500。
输出格式
输出只有一行,代表 a+b_a_+b 的值。
输入输出样例
输入
1 |
**输出 **
2 |
**输入 **
1001 |
输出
10100 |
source code
|
python版
a=int(input()) |
NOIP2015 普及组 扫雷游戏
题目描述
扫雷游戏是一款十分经典的单机小游戏。在 $n$ 行 $m$ 列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格。
现在给出 $n$ 行 $m$ 列的雷区中的地雷分布,要求计算出每个非地雷格周围的地雷格数。
注:一个格子的周围格子包括其上、下、左、右、左上、右上、左下、右下八个方向上与之直接相邻的格子。
输入格式
第一行是用一个空格隔开的两个整数 $n$ 和 $m$,分别表示雷区的行数和列数。
接下来 $n$ 行,每行 $m$ 个字符,描述了雷区中的地雷分布情况。字符 $\texttt{*}$ 表示相应格子是地雷格,字符 $\texttt{?}$ 表示相应格子是非地雷格。相邻字符之间无分隔符。
输出格式
输出文件包含 $n$ 行,每行 $m$ 个字符,描述整个雷区。用 $\texttt{*}$ 表示地雷格,用周围的地雷个数表示非地雷格。相邻字符之间无分隔符。
样例输入
3 3 |
样例输出
*10 |
样例输入
2 3 |
样例输出
2*1 |
提示
对于 $100%$的数据,$1≤n≤100, 1≤m≤100$。
source code
|
Leetcode74 搜索二维矩阵
编写一个高效的算法来判断 m x n
矩阵中,是否存在一个目标值。该矩阵具有如下特性:
- 每行中的整数从左到右按升序排列。
- 每行的第一个整数大于前一行的最后一个整数。
示例 1:
输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3 |
示例 2:
输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13 |
提示:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 100
-104 <= matrix[i][j], target <= 104
source code
/* |
Leetcode153 寻找旋转排序数组中的最小值
已知一个长度为 n
的数组,预先按照升序排列,经由 1
到 n
次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7]
在变化后可能得到:
- 若旋转
4
次,则可以得到[4,5,6,7,0,1,2]
- 若旋转
7
次,则可以得到[0,1,2,4,5,6,7]
注意,数组 [a[0], a[1], a[2], ..., a[n-1]]
旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]]
。
给你一个元素值 互不相同 的数组 nums
,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素 。
你必须设计一个时间复杂度为 O(log n)
的算法解决此问题。
示例 1:
输入:nums = [3,4,5,1,2] |
示例 2:
输入:nums = [4,5,6,7,0,1,2] |
示例 3:
输入:nums = [11,13,15,17] |
提示:
n == nums.length
1 <= n <= 5000
-5000 <= nums[i] <= 5000
nums
中的所有整数 互不相同nums
原来是一个升序排序的数组,并进行了1
至n
次旋转
source code
/* |
Leetcode33 搜索旋转排序数组
整数数组 nums
按升序排列,数组中的值 互不相同 。
在传递给函数之前,nums
在预先未知的某个下标 k
(0 <= k < nums.length
)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]]
(下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7]
在下标 3
处经旋转后可能变为 [4,5,6,7,0,1,2]
。
给你 旋转后 的数组 nums
和一个整数 target
,如果 nums
中存在这个目标值 target
,则返回它的下标,否则返回 -1
。
你必须设计一个时间复杂度为 O(log n)
的算法解决此问题。
示例 1:
输入:nums = [4,5,6,7,0,1,2], target = 0 |
示例 2:
输入:nums = [4,5,6,7,0,1,2], target = 3 |
示例 3:
输入:nums = [1], target = 0 |
提示:
1 <= nums.length <= 5000
-104 <= nums[i] <= 104
nums
中的每个值都 独一无二- 题目数据保证
nums
在预先未知的某个下标上进行了旋转 -104 <= target <= 104
source code
/* |