
ACM题目
XuKathy
这个作者很懒,什么都没留下…
展开
-
UVA 11461-Square Numbers
题目链接题目解析题意输入两个整数a和b,输出从a到b(包含a和b)的平方数的个数。直到输入0 0时程序结束。思路如果一个数n是平方数,(double)sqrt(n)-(int)sqrt(n)<1e-6。代码#include<stdio.h>#include<math.h>bool f(int x){ double m=sqrt(x); int n=(int)m;原创 2016-07-23 10:25:24 · 1030 阅读 · 0 评论 -
u Calculate e
题目链接#include<stdio.h>#include<iostream>using namespace std;int a[102];int f(int n){ int s=1; for(int i=1;i<=n;i++) s*=i; return s;}int main(){ printf("n e\n"); printf(原创 2016-09-27 19:36:51 · 516 阅读 · 0 评论 -
Sum Problem
溢出导致WA 题目链接#include<iostream>using namespace std;int main(){ int n; while(cin>>n){ cout<<(int)(n/2.0*(1+n))<<endl; //cout<<n*(1+n)/2<<endl;//会溢出 //cout<<(int)n/2.0*(1原创 2016-09-27 18:50:16 · 384 阅读 · 0 评论 -
Let the Balloon Rise
题目链接 map的使用#include<iostream>#include<string>#include<map>using namespace std;int main(){ //freopen("in.txt","r",stdin); int t; while(~scanf("%d",&t)&&t){ map<string,int>s;原创 2016-09-27 18:11:50 · 351 阅读 · 0 评论 -
杨辉三角形第n行的奇数个数
题目链接#include<iostream>using namespace std;int main(){ int T; cin>>T; while(T--){ int n; cin>>n; int k=__builtin_popcount(n);//得出二进制n中1的个数 cout<<(1LL<<k)<<原创 2016-09-24 21:34:36 · 5586 阅读 · 0 评论 -
CCF计算机软件能力认证模拟试题
题1、问题描述 给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。 输入的第二行有==n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。 输出格式 输出这n个次数中出现次数最多的数。如果这原创 2016-09-06 19:54:03 · 971 阅读 · 0 评论 -
UVA 11426-GCD - Extreme (II)
题目链接题目解析题意输入正整数n,求满足的数对(i,j)所对应的gcd(i,j)之和。输入0时程序结束。思路 所有gcd(x,n)的值都是n的约数,用g(n,i)表示满足gcd(x,n)=i且x<n的正整数x的个数,则f(n)=sum{i×g(n,i)|i是n的约数}。gcd(x,n)=i的充要条件是gcd(x/i,n/i)=1。满足条件的x/i有phi(n/i)个,说明g(n,i)=phi(n/原创 2016-07-22 01:25:44 · 390 阅读 · 0 评论 -
UVA 11401-Triangle Counting
题目链接题目解析题意输入整数n,在1,2,…,n中任选3个不同的整数作为三角形的边长,求能组成多少个三角形。直到输入0时程序结束。思路用加法原理,设最大边长为x的三角形有c(x)个,另外2条边长分别为y和z,根据三角形不等式有y+z>x,得出z的范围为x>z>x-y。y从1取到x-1,对应的z的解的个数成等差数列,y=x-1时z有x-2个解。根据等差数列的求和公式,共有0+1+2+…+(x-3)+(原创 2016-07-21 22:16:57 · 439 阅读 · 0 评论 -
UVA 11538-Chess Queen
题目链接题目解析题意求在n*m棋盘上放2个相互攻击的皇后的方案数,即求2个皇后在同一行、同一列或同一对角线的所有情况。每行输入2个整数n,m,直到n=m=0时程序结束。思路同一行放2个皇后的方案数为A(n,m),同一列放2个皇后的方案数为B(n,m),同一对角线放2个皇后的方案数为D(n,m),运用加法原理,答案为A(n,m)+B(n,m)+D(n,m)。 A(n,m)、B(n,m)、D(n,m)原创 2016-07-21 17:19:37 · 613 阅读 · 0 评论 -
UVA 11806-Cheerleaders
题目链接题目解析题意在m*n的矩形网格中放k个相同的石子,每个格子最多放一个石子,所有石子都必须用完,保证第一行,第一列,最后一行,最后一列都要有石子,求有多少种方法。 输入数据的组数T,每组数据包含行数M,列数N,石子数K。 输出满足题意的方法种数。思路运用容斥原理。全集为S,第一行没有石子的方案集为A,最后一行没有石子的方案集为B,第一列没有石子的方案集为C,最后一列没有石子的方案集为D。所原创 2016-07-21 16:48:49 · 373 阅读 · 0 评论 -
UVA 1500-Alice and Bob
题目链接题目解析题意输入数据的组数T,输入每组数据的个数N,输入N个整数。两个人轮流操作N个整数,每次操作可以选择将一个数减一,或是合并两个数,不能操作者算作输。Alice先操作。思路推理参考 dp参考 推理的结论为: 记c为石子数为1堆数,s为其他堆合并再取完的总步数。当s大于2时,c为奇数(c&1)或s为奇数(s&1)则先手必胜;当s小于2时(即s==0||s==2),c不为3的倍数(c%原创 2016-07-21 13:00:31 · 480 阅读 · 0 评论 -
UVA 11489- Integer Game
题目链接题目解析题意输入数据的组数t,每组数据包含一连串的数字,S先取T后取,使取后的数字之和为3的倍数(0也3的倍数),直到不能取算作输,输出赢的字符。思路所有数字的和sum,对3取余的结果,等于每个数字对3取余的和再对3取余的结果。一:启发于博客 每个数字对3取余结果为0,1,2的数量分别设为num,num1,num2。 总共有两种情况: 1、起初sum是3的倍数,要保证取后数字和为3的倍原创 2016-07-20 11:10:42 · 791 阅读 · 0 评论 -
UVA 10780-Again Prime? No Time.
题目链接题目解析题意输入数据组数t,每组数据包含2个整数m和n,若m^k能被n!整除,输出最大的K,否则输出”Impossible to divide”。思路将m分解质因数,求出每个质因数的个数p[i],在n!中相对应m中质因数的个数为q[i],q[i]÷p[i]的最小值即为所求的K的值。 如何求m和n!的质因数见代码原创 2016-07-19 23:26:01 · 383 阅读 · 0 评论 -
UVA 10892 - LCM Cardinality
题目链接题目解析题意输入整数n,输出n和最小公倍数(lcm)为n的所有组合数目。输入的n为0时,程序结束。思路组合中的两个数都是n的因数,暴力枚举n的因数,符合a*b==lcm(a,b)*gcd(a,b)条件的组合数的和即为所求。 简单说vector是一个存放任意类型的动态数组 vector<数据类型> a 和 数据类型 a[]的区别 系统在处理不定长时,向量比数组要快代码#include<s原创 2016-07-20 06:08:02 · 619 阅读 · 0 评论 -
UVA 11889 - Benefit
题目链接题目简析题意LCM(A,B)=C即A和B的最小公倍数是C,根据输入的A和C,若存在B则输出B的最小值,否则输出“NO SOLUTION”。思路最大公约数(gcd) (1)int gcd(int a,int b){return a%b==0?b:gcd(b,a%b);}(2)int gcd(int a,int b){return b==0?a:gcd(b,a%b);}最大公约数(gc原创 2016-07-18 00:52:45 · 378 阅读 · 0 评论 -
UVA 10943 - How do you add?
题目链接题目解析题意输入整数N和K,将N分成K个不超过N的非负整数的和的形式,求解有多少种组合方式,当输入的两个数N和K都为0时,程序结束。思路法一(隔板法):启发于博客 题目等价于将N个相同的小球,放入K个不同的盒子中,盒子可以为空,求解有多少种放法。转化为将N+K个相同的小球,放入K个不同的盒子中,每个盒子至少有一个小球;在N+K-1个空当里插入K-1个隔板,共有C(N+K-1,K-1)种插法原创 2016-07-18 01:46:22 · 426 阅读 · 1 评论 -
UVA 11076-Add Again
题目链接题目解析题意输入整数N(1≤N≤12),求N个数字(0~9)构成的不重复的全排列的和。输入N为0时,程序结束。思路平均数思想 所求结果s=每一位的平均数×排列数×N个1 Example: <1 1 2> 代码#include<stdio.h>#include<iostream>#include<string.h>using namespace std;#define ULL原创 2016-07-23 13:03:02 · 422 阅读 · 0 评论 -
Max Sum
题目链接#include<stdio.h>#include<iostream>#include<stdlib.h>//calloc的头文件using namespace std;int main(){ freopen("in.txt","r",stdin); int maxn,i,j,l,r,sum,cas=0; int T,N; int *a; sc原创 2016-09-29 13:58:30 · 675 阅读 · 0 评论