![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法竞赛入门经典
文章平均质量分 57
老鼠哎大米
这个作者很懒,什么都没留下…
展开
-
孪生素数
如果n和n+2都是素数,则称它们是孪生素数.输入m,输出两个数均不超过m的最大孪生素。5输入:201000输出:17 19 881 883#include #include //ºê;#include using namespace std;int is_prime(int x){ int m; assert(x>=0); i原创 2013-08-12 18:09:24 · 3259 阅读 · 0 评论 -
3n+1
对于任意大于1的自然数n,若n为奇数,则变为3n+1,否则变为n的一半,经过若干次变换,一定会使n变为1。输入:一个自然数n,输出:变为1需要的次数.样例输入:3;样例输出:7.PS:注意不要溢出;#include using namespace std;int main(){ double n; int count=0; cin>>n原创 2013-08-04 10:20:53 · 755 阅读 · 0 评论 -
阶乘的准确值
输入不超过1000的正整数n,输出n!=1*2*3*4*......*n的精确结果。输入:30输出:265252859812191058636308480000000PS:为了保存结果,分析1000!有多大,因此可以用一个3000个元素的数组f保存,为了方便进位,我们用f[0]表示个位,f[1]表示十位,f[2]表示百位........(逆位储存,进位的时候可以简单表示),注意原创 2013-08-14 14:54:54 · 727 阅读 · 0 评论 -
周期串
如果一个字符串可以由某个长度为k的字符串重复多次得到,我们说该串以k为周期。例如:abcabcabcabc以3为周期,(注意,它也以6和12为周期)。输入一个长度不超过80的串,输出它的最小周期。输入:hohoho输出:2PS:字符串可能有多个周期,但只需求出最小的一个,可以从小到大枚举各个周期,一旦符合条件就输出。#include #include #include原创 2013-08-14 10:38:54 · 1068 阅读 · 4 评论 -
错位字符串
用键盘打字的时候,可能会向右错一位,输入一个错位后输出的字符串,输出原来想要打的句子。输入:O S, GOMR YPFSU/输出:I AM FINE TODAY.#include #include using namespace std;char *s="`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";//有两个\表示不原创 2013-08-13 00:35:47 · 1772 阅读 · 0 评论 -
用递归计算阶乘
题目:f(0)=1;f(n)=f(n-1)*n;#include using namespace std;int f(int n){ return n==0?1:f(n-1)*n;}int main(){ int n; while(cin>>n) { cout<<f(n)<<endl; } return 0;原创 2013-08-13 00:30:38 · 657 阅读 · 0 评论 -
最长回文子串
输入一个字符,求出其中最长的回文子串。子串的含义是:在元串中连续出现的字符串片段。回文的含义是:正看和倒看相同,如abba和yyxyy,在判断时候应该忽略所有的空格和标点符号,且忽略大小写,但输出应该保持原样,输入的字符长度不超过5000,且占据单独一行,输出最长的回文子串如有多个,输出,起始位置最靠左的样例输入:Confuciuss say:Mandam,I ˊm Adam.样例输出原创 2013-08-10 10:15:00 · 591 阅读 · 0 评论 -
NYoj 蛇形填数
描述在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:10 11 12 19 16 13 28 15 14 37 6 5 4输入直接输入方陈的维数,即n的值。(n输出输出结果是蛇形方陈。样例输入3样例输出7 8 16 9 25 4 3#include #include //#include原创 2013-08-10 00:09:20 · 604 阅读 · 0 评论 -
蛇形填数
在n*n方阵里填入1,2,3,....,n*n,要求填成蛇形.例如n=4时方阵为:10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4#include #include using namespace std;int main(){ int n,x,y; int a[100原创 2013-08-08 11:42:06 · 841 阅读 · 0 评论 -
阶乘之和
输入n,计算S=1!+2!+3!+……+n!的末六位(不含前导0).n输入:10输出:37913PS:由题意可知,只求后六位,所以只要S>=6位数,则S不变了. #include using namespace std;int main(){ int n; const int mod=1000000; int sum=0;原创 2013-08-08 11:28:01 · 605 阅读 · 0 评论 -
竖式问题
问题:找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式如下:注意:竖式中的空格改用小数点显示,但你的程序应该输出空格,而非小数点.样例输入:2357样例输出:...775X..33----- 2原创 2013-08-12 17:18:17 · 912 阅读 · 0 评论 -
6174问题
假设你有一个各位数字互不相同的四位数,把所有数字从大到小排序后得到a,从小到大排序后得到b,然后用a-b替换原来这个数,并且继续操作.例如,从1234出发,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174.有趣的是,7641-1467=6174,回到了它自己.输入一个n位数,输出操作序列,直到出现循环(即新得到的数曾经得到过).输入保证在循环之原创 2013-08-27 17:11:01 · 701 阅读 · 0 评论 -
因子和阶乘
输入正整数n(2样例输入:553样例输出:5!= 3 1 153!= 49 23 12 8 4 4 3 2 2 1 1 1 1 1 1 1#include #include #include using namespace std;//素数判定。注意:n不能太大int is_prime(int n){ for(int i=2; i原创 2013-10-26 15:15:32 · 537 阅读 · 0 评论 -
字母重排
输入一个字典(用******结尾),然后再输入若干单词。每输入一个单词w,你都需要在字典中找出所有可以用w的字母重排后得到的单词,并按照字典次序从小到大的顺序在一行中输出(如果不存在,输出:}).输入单词之间用空格或空行隔开,且所有输入单词都由不超过6个小写字母组成.注意,字典中的单词不一定案子点序列排列.样例输入:tarp given score refund only trap wor原创 2013-09-07 20:47:43 · 717 阅读 · 0 评论 -
数据统计
输入一些数,求最大值,最小值和平均值(保留3位小数),输入保证这些数都是不超过1000的整数.输入:2 8 3 5 1 7 3 6输出:1 8 4.375 #include int main(){ int x,n=0,min,max=0,s=0; while(scanf("%d",&x)==1) { s+=x;原创 2013-08-08 11:30:55 · 644 阅读 · 0 评论 -
Cantor数表
题目描述:如下列数,第一项是1/1,第二项是1/2,第三项是2/1,第四项是3/1,第五项是2/2,..........输入n,输出第n项。1/1 1/2 1/3 1/4 1/52/1 2/2 2/3 2/43/1 3/2 3/3 4/1 4/2 5/1样例输入:314712345样例输出:2/12/4原创 2013-09-20 16:04:30 · 663 阅读 · 0 评论 -
小学生算数
计算两个整数在相加的时候需要多少次进位,可以连续多次处理多组数据,直到读到两个0。假设输入的整数都不超过9个数字。输入:123 456555 555123 5940 0输出:031PS:每次把a和b分别模10就能获取它们的个位数字。#include using namespace std;int main(){ int a,b;原创 2013-08-14 10:59:03 · 672 阅读 · 0 评论 -
TeX括号
在TeX中,做双引号是“,右双引号是”。输入一篇包含双引号的文章,输出转换成TeX格式。输入:"To be or not to be,"quoth the Bard,"that is the question".输出:“To be or not to be,”quoth the Bard,“that is the question”.PS:本题的关键是,如何判断一个双引号是左双原创 2013-08-14 09:04:02 · 848 阅读 · 0 评论 -
组合数
输入非负整数n和m,输出组合数C=n!/m!(n-m)!,其中m输入:20 1输出:20#include using namespace std;int main(){ int m,n; while(cin>>n>>m) { float s=1; for(int i=1;i<=m;i++) {原创 2013-08-12 18:00:10 · 513 阅读 · 0 评论 -
移动小球
#include using namespace std;#define MAXN 500001int A[MAXN];int find(int index,int n){ for(int i=1;i<=n;i++) { if(index==A[i]) { return i;//记录index的位置,index就表示X和Y; } } return 0;}原创 2014-01-20 16:22:41 · 681 阅读 · 0 评论 -
开灯问题
有n盏灯,编号为1~n.第一个人把所有的灯都打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的将被打开,开着的将被关掉),依次类推.一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯的编号.k输入:7 3输出:1 5 6 7#include #include int main(){ int i,原创 2013-08-08 11:37:30 · 605 阅读 · 0 评论