摘要:括号的匹配Time Limit:1000MSMemory Limit:65535KBSubmissions:428Accepted:68Description题意描述: 在算术表达式中,除了加、减、乘、除等运算外,往往还有括号。包括有大括号{},中括号[],小括号(),尖括号<>等。 对于每一对括号,必须先左边括号,然后右边括号;如果有多个括号,则每种类型的左括号和右括号的个数必须相等;对于多重括号的情形,按运算规则,从外到内的括号嵌套顺序为:大括号->中括号->小括号->尖括号。例如,{[()]},{()},{{}}为一个合法的表达式,而([{}]),{([])
阅读全文
摘要:栈Time Limit:1000MSMemory Limit:65535KBSubmissions:1021Accepted:476Description建立顺序栈或链栈,编写程序实现十进制数到二进制数的转换。Input输入只有一行,就是十进制整数。Output转换后的二进制数。Sample Input10Sample Output1010解法一:链栈# include<stdio.h>//链栈# include<malloc.h># define Len sizeof(struct node)# define N 100typedef int ElemType;typ
阅读全文
摘要:方程式DescriptionConsider equations having the following form: a*x1*x1 + b*x2*x2 + c*x3*x3 + d*x4*x4 = 0 a, b, c, d are integers from the interval [-50,50] and any of them cannot be 0. It is consider a solution a system ( x1,x2,x3,x4 ) that verifies the equation, xi is an integer from [-100,100] and x.
阅读全文
摘要:顺序表Time Limit: 1000MS Memory Limit: 65535KBSubmissions: 226 Accepted: 50Description实现顺序表类Seqlist,完成下面内容: (1)在顺序表类Seqlist 中增加一个成员函数,要求删除顺序表中等于item的所有数据元素。 (2)编写程序实现把顺序表类Seqlist的对象B连接到顺序表类Seqlist的对象A的尾部。 (3)编写程序,把顺序表类Seqlist的对象A中的数据元素原地反转。Input第一行输入对象A的长度 第二行输入对象B的长度 第三行依次输入对象A的数据元素,建立对象A 第四行依次输入对象B的数
阅读全文
摘要:取模Time Limit:1000MSMemory Limit:65535KBSubmissions:571Accepted:96Description给你三个数X(1<=X<=10^100)、Y(1<=Y<=10^8)、Z(1<=Z<=10^4),你能计算出X^Y%Z的值吗?Input输入三个如上所描述的数X、Y、Z。多组输入。Output输出X^Y%Z的值。Sample Input2 3 5 12345 2345 345 123456789123456789 19234321 2341Sample Output32401825【分析】 这里的用同余幂的思
阅读全文
摘要:Delete NumbersTime Limit:1000MSMemory Limit:65535KBSubmissions:156Accepted:21Description给定n 位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a 和正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。 对于给定的正整数a,编程计算删去k个数字后得到的最小数。Input第1 行是1 个正整数a。第2 行是正整数k。Output计算出的最小数(输出无前导0)Sample Input1785434Sample Output13【分析】如果是1200
阅读全文
摘要:欧几里得算法两个整数a,b的最大公约数可以表示为gcd(a,b);→还可以表示成s*a+t*b (s,t为整数)→两个整数a,b的最小公倍数可以表示为lcm(a,b);一:令a=b*q+r,则r = a mod b ①假设d是a,b的一个公约数,则有 d|a, d|b,而r = a - kb,因此d|r 因此d是(b,a mod b)的公约数 ②假设d 是(b,a mod b)的公约数,则 d | b , d |r ,但是a = kb +r 因此d也是(a,b)的公约数 因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等则有gcd(a,b)=gcd(b,a mod
阅读全文
摘要:Find the sum of digits in n!Time Limit:2000MSMemory Limit:65535KBSubmissions:192Accepted:41Descriptionn! meansn*(n1) *... *3 *2 *1Find the sum of the digits in the number n!Inputone line: n (1<n<=10000)Outputthe sum of the digits in the number n!Sample Input10Sample Output27Hint10! =36288003+6
阅读全文
摘要:N!Time Limit:5000MSMemory Limit:65535KBSubmissions:96Accepted:26DescriptionGiven an integer N(0 ≤ N ≤ 10000), your task is to calculate N! InputOne N in one line, process to the end of file.OutputFor each N, output N! in one line.Sample Input123Sample Output126解法一://用大整数想乘的方法# include<iostream>
阅读全文
摘要:大整数乘法Time Limit:5000MSMemory Limit:65535KBSubmissions:1757Accepted:349Description在一些应用中,特别是现在的密码学中,常常需要用超过100位的整数来做乘法,以此来对数据加密。现在有两个小于等于100位的大整数a和b(位数相同),请写程序计算出这两个大整数乘积的结果。Input输入有三行第一行是大整数位数第一个大整数第二个大整数Output两个大整数的结果Sample Input1011111111111111111111Sample Output1234567900987654321# include<ios
阅读全文
摘要:数字全排列Time Limit:1000MSMemory Limit:65535KBSubmissions:57Accepted:33Description从1~9之间顺序取N个数字,组成每位数不重复的所有可能的N位数,按从小到大的顺序进行编号,当输入其中的任何一个数M是,能找出该数对应的编号。如:当N = 3,M = 132时,则输出: [123(1), 132(2), 213(3), 231(4), 312(5), 321(6)]——> X = 2Input输入只有一行,两个正整数N和M(1 ≤ N ≤ 9,1 ≤ K ≤ 987654321),之间用一个空格分隔开。Output输出
阅读全文
摘要:没想到做出来和数组一样线性表的顺序存储Time Limit:1000MSMemory Limit:65535KBSubmissions:1691Accepted:457Description建立长度为n的顺序表SeqList,长度n通过和n个数据元素通过键盘输入。要求: 1)通过调用插入函数,建立一个长度为n的顺序表类的对象,新插入的元素始终插入到第0号位置; 2)在顺序表SeqList中增加一个删除函数,要求删除顺序表中等于item的所有元素。Input输入共有三行,第一行是一个整数n,表示线性表的长度; 第二行输入一个整数item,指定被删除的数据元素值; 第三行是输入n个整数数据元素;O
阅读全文
摘要:今天开始写数据结构了,感觉不错!!2012-05-19线性表的链式存储Time Limit:1000MSMemory Limit:65535KBSubmissions:191Accepted:85Description建立长度为n的线性表的链表类LinList,长度n通过和n个数据元素通过cin输入。 要求: 1)调用Insert函数,建立长度为n的链表A, 2)建立长度为m的链表B,并编写函数实现单链表类LinList的对象B连接到单链表类LinList的对象A的尾部:Void Concatenate(LinList& A, LinList& B)。并输出链接后的链表的所有数
阅读全文
摘要:Thirst for success 最近总是有一种渴望成功的欲望,相当强烈。从来没这么渴望过成功,有一种被激发出潜能的感觉。好强的能量,真希望能在一万人面前演讲,自由发挥。 我本来就是一个不甘于过平凡生活的人,我真该改变点什么了,真该做点什么了。如果每天都在原地踏步,那就相当于浪费生命,难道不是吗?是该做点改变了!英语折腾我这么久了,是该征服它了;编程被别人瞧不起,好久都没学点东西了,是该进入数据结构了。好吧,开始吧,Now or Never,别浪费这种欲望。我不是说过要创办自己的公司吗?如果现在都还不行动,如果还一天天被大学这种萎靡软化的话,我怕自己曾经的斗志真会被磨去。突然有了一种恐惧,
阅读全文
摘要:getchar()1.从缓冲区读走一个字符,相当于清除缓冲区2.前面的scanf()在读取输入时会在缓冲区中留下一个字符'\n'(输入完s[i]的值后按回车键所致),所以如果不在此加一个getchar()把这个回车符取走的话,gets()就不会等待从键盘键入字符,而是会直接取走这个“无用的”回车符,从而导致读取有误3.getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和Tab)getchar()使用不方便,解决方法: (1)使用下面的语句清除回车: while(getchar()!='\n'); (2)用getche()或getch()代替getc
阅读全文
摘要:Knight MovesDescriptionA friend of you is doing research on the Traveling Knight Problem (TKP) where you are to find the shortest closed tour of knight moves that visits each square of a given set of n squares on a chessboard exactly once. He thinks that the most difficult part of the problem is det
阅读全文
摘要:阶乘问题Time Limit: 5000MS Memory Limit: 65535KB Submissions: 348 Accepted: 37 Description 也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如:12! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 = 479,001,60012的阶乘最右边的非零位为6。写一个程序,计算N(1<=N<=50,000,000)阶乘的最右边的非零位的值。注意:10,000,000!有2499999个零。 Input仅一行包含一个正整数N。 Output单独一行包
阅读全文
摘要:给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3 628 800,N!的末尾有两个0。分析:对N!进行质因数分解,N!=(2^x)×(3^y)×(5^z)…,由于10 = 2×5,所以M只跟X和Z相关,每一对2和5相乘可以得到一个10,于是M = min(X, Z)。不难看出X大于等于Z,因为能被2整除的数出现的频率比能被5整除的数高得多,所以把公式简化为M = Z【解法一:分析后①】#include<iostream>using namespace std;int main(){ int n; int num,p; n =
阅读全文
摘要:01背包问题:1.递归思想0- 1 背包问题如果采用递归算法来描述则非常清楚明白, 它的算法根本思想是假设用布尔函数knap( s, n) 表示n 件物品放入可容质量为s 的背包中是否有解( 当knap 函数的值为真时说明问题有解,其值为假时无解) . 我们可以通过输入s 和n 的值, 根据它们的值可分为以下几种情况讨论:( 1) 当s= 0时可知问题有解, 即函数knap( s, n) 的值为true; ( 2) 当s< 0 时这时不可能, 所以函数值为false; ( 3) 当输入的s> 0 且n< 1 时即总物品的件数不足1, 这时函数值为false, 只有s>
阅读全文
摘要:牛顿迭代法x(n+1)=x(n)-f(x(n))/f'(x(n)),称为r的n+1次近似值,上式称为牛顿迭代公式解方程Time Limit:1000MSMemory Limit:65535KBSubmissions:28Accepted:13Description求解方程 sqrt(x)+pow(x, (double)1/3))==a (0<=a<=100)。 Input输入包含多组测试数据,输入文件的第一行包含一个整数t,表示测试数据组数。每组测试数据中只有一行,包含一个整数 a(0<=a<=100)。 Output每组测试数据的输出只占一行,包含一个浮点数(
阅读全文
摘要:给你N个正整数,求两两之差的绝对值之和。比如有4个数分别为 3,2,6,5,则答案为 |3-2| + |3-6| + |3-5| + |2-6| + |2-5| + |6-5| =14下面先对3,2,5,6进行从小到大的排序(这里可选这sort和qsort),保证每次相减都非负。然后就用下面代码实现它:sign记录这n个数,sum=0;for(i=1;i<n;i++)sum+= (sign[i]-sign[i-1])*i*(n-i);//注:若按平常思路用两个for,就很容易超时。而这种从几何上来解决这个问题,很妙!!
阅读全文
摘要:约瑟夫环(Josephus)问题: 已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。 例如:n = 9, k = 1, m = 5 【解答】 出局人的顺序为5, 1, 7, 4, 3, 6, 9, 2, 8。解法一:用数组模拟#include<iostream>using namespace std;int main(){ int sign,n,m,i,Loop[100],Count; while(cin>>n>
阅读全文