
算法竞赛入门例题练习题
BODOA
波动
展开
-
救济金发放 (The Dole QUEUE UVa 133)
n(n<20)个人站成一圈,逆时针编号为1~n。有两个官员,A从1开始逆时针数,B从n开始顺时针数。在每一轮中,官员A数k个就停下来,官员B数m个就停下来(注意有可能两个官员停在同一个人上)。接下来被官员选中的人(1个或者2个)离开队伍。输入n,k,m输出每轮里被选中的人的编号(如果有两个人,先输出被A选中的)。例如,n=10,k=4,m=3,输出为4 8, 9 5, 3 1, 2 6, 1...原创 2018-02-13 15:23:02 · 327 阅读 · 0 评论 -
最大乘积(Maximum Product,UVa 11059)
最大乘积(Maximum Product,UVa 11059)题意: 输入n个元素组成的序列S,找出一个乘积最大的连续子序列。如果这个最大的乘积不是正数,输出0(表示无解)。1<=n<=18,-10<=Si<=10。每一个案例之间用空白行分隔,案例输出要求输出"Case #M: The maximum product is P.",其中M为案例号,P为乘积值。案例...原创 2018-02-23 19:26:32 · 354 阅读 · 0 评论 -
完全平方数
输出所有形如aabb的完全平方数完全平方指用一个整数乘以自己例如1*1,2*2,3*3等,依此类推。#include <stdio.h>#include <math.h> int main(void){ for(int i=1;i<9;i++){ for(int j=0;j<9;j++){ int n=i*...原创 2018-02-06 16:07:03 · 516 阅读 · 0 评论 -
开灯问题(数组反转)
有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯被打开, 开着灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着? 输入:n和k,输出开着的灯编号。k≤n≤1000。 样例输入:7 3 样例输出:1 5 6 7 #include <stdio.h>...原创 2018-02-07 18:42:27 · 744 阅读 · 0 评论 -
蛇形走位 (二维数组应用)
在n*n方阵里填入1,2,„,n*n,要求填成蛇形。例如n=4时方阵为 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 上面的方阵中,多余的空格只是为了便于观察规律,不必严格输出。n≤8。#include <stdio.h>#include <string.h>#d...原创 2018-02-07 20:13:03 · 1494 阅读 · 0 评论 -
竖式问题 (读写入字符串及判断字符是否属于已知字符串内容)
sprintf(字符串,“原先格式类型”,要输入字符串的变量);eg: sprintf(buf,"%d%d%d%d%d",abc,de,x,y,z);strchr(字符串,字符);eg: if(strchr(s,buf[i])==NULL) ok=0;找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输...原创 2018-02-07 21:21:42 · 373 阅读 · 0 评论 -
习题3-2 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)
习题3-2 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)给出一种物质的分子式(不带括号),求分子量。本题中的分子式只包含4种原子,分别为C, H, O, N,原子量分别为12.01, 1.008, 16.00, 14.01(单位:g/mol)。例如,C6H5OH的分子量为94.108g/mol。Note:这题的关键在于如何判断元素个数为1时的情况,每读...原创 2018-02-10 15:41:08 · 820 阅读 · 1 评论 -
习题3-3 数数字(Digit Counting , ACM/ICPC Danang 2007, UVa1225)
把前n(n≤10000)个整数顺次写在一起:123456789101112…数一数0~9各出现多少次(输出10个整数,分别是0,1,…,9出现的次数)。Note:一开始的想法是,先把1~10000全都写入数组,然后遍历一遍,统计0~9出现的次数,这显然很蠢。。。正确的打开方式应该是依次输入1~n,每输入一个数就统计一次,多位数要思考一下如何把各个位区分开来。// ex3-3.c#includ...转载 2018-02-11 16:11:17 · 1567 阅读 · 1 评论 -
习题3-4 周期串(Periodic Strings, UVa455)
习题3-4 周期串(Periodic Strings, UVa455)如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。输入一个长度不超过80的字符串,输出其最小周期。#include <iostream> #include <cstring> using namespa...原创 2018-02-11 16:55:35 · 497 阅读 · 0 评论 -
习题3-8 循环小数(Repeating Decimals, ACM/ICPC World Finals 1990, UVa202)
习题3-8 循环小数(Repeating Decimals, ACM/ICPC World Finals 1990, UVa202)输入整数a和b(0≤a≤3000,1≤b≤3000),输出a/b的循环小数表示以及循环节长度。例如a=5,b=43,小数表示为0.(116279069767441860465),循环节长度为21。判断小数部分开始循环: 如果某一步的余数是之前出现过的,那么就开始循...转载 2018-02-11 17:52:46 · 842 阅读 · 1 评论 -
习题3-9 子序列(All in All, UVa 10340)
输入两个字符串s和t,判断是否可以从t中删除0个或多个字符(其他字符顺序不变),得到字符串s。例如,abcde可以得到bce,但无法得到dc。提示:t是较长的那个序列,s是要得到的那个序列,思路就是先把“指针”指向s中的第一个字符,依次遍历t序列,找到s中的第一个字符后,“指针”后移一个,继续遍历t,如果指针移动到s的末尾,说明可以,否则就不行。#include <stdio.h>#...原创 2018-02-11 17:59:11 · 654 阅读 · 0 评论 -
刽子手游戏(Hangman judge,Uva489)
刽子手游戏(Hangman judge,Uva489)游戏规则,计算机想一个单词让你猜,你每次可以猜一个字母,如果单词里有那个字母,所有该字母都会显示出来,如果没有那个字母则计算机会在一副“刽子手”画上填一笔,这幅画一共需要7笔就能完成,因此你最多只能错6次。注意猜一个已经猜过的字母也算错。在本题中,你的任务是编写一个“裁判”程序,输入单词和玩家的猜测,判断玩家赢了,(You win.)、输了(Y...原创 2018-02-12 16:23:36 · 736 阅读 · 4 评论 -
分数拆分(Uva 10976)
输入正整数k,找到所有的正整数x>=y,使得1/k=1/x + 1/y; 样例输入: 2 12 样例输出: 2 1/2 = 1/6 + 1/3 1/2 = 1/4 + 1/4 8 1/12 = 1/156 + 1/13 1/12 = 1/84 + 1/14 1/12 = 1/60 + 1/15 1/12 = 1/48 + 1/16 1/12 = 1/36 + 1/18 1/12 = 1/30...转载 2018-02-23 20:33:30 · 324 阅读 · 0 评论