- 博客(68)
- 资源 (2)
- 收藏
- 关注
原创 UVa 10235 - Simply Emirp
题目:判断一个数和翻转是不是素数。分析:简单题、数论。首先打表计算1000000内的素有素数,然后判断即可。注意:翻转后的数字如果是原来的数字就不算emirp。#include #include using namespace std;int prime[1000000];long rev( long dat ){ long now = 0; while ( d
2013-10-31 19:52:43 3250
原创 UVa 10006 - Carmichael Numbers
题目:判断一个数是不是Carmichael number。分析:数论。利用素数的随进判定算法,可以通过判定并且不是素数的数称为Carmichael number。 首先,利用筛法对素数进行打表。 然后,利用费马小定理枚举所有的a进行判断。#include #include #include using namespace st
2013-10-31 19:25:15 2589
原创 UVa 414 - Machined Surfaces
题目:n个由X和空格组成的串,两边有至少一个X,将n个串压缩,每次每行消除一个空格,问到不能消除时剩余的空格。分析:简单题。统计全体空格数sum_b和最少空格数min_b,则结果就是sum_b - n*min_b。注意:利用gets或者getline读入串。#include #include #include #include using namespace std;
2013-10-31 18:44:52 1581
原创 UVa 10424 - Love Calculator
题目:给你两个字符串,其中每个字母对应1-26的数值,其他符号无值,求两个串的数值的位之和的比值。分析:简单题。看起来比较复杂,现将串转化成数值,在求出各位之和,计算比值即可。注意:比值要求不超过100.00%所以要用小的比大的。#include #include #include #include using namespace std;char name1[30]
2013-10-31 18:09:40 1334
原创 UVa 10137 - The Trip
题目:组织同学去旅行,然后先分别付账,最后均摊,问需要交换的最少金钱数。分析:简单题。本题由于最少交换单位为0.01所以涉及到精度问题。平均数肯能超过这个精度。 首先,求得精度到0.01的平均数,所以最后所有人手中的金钱只能是平均数ave或者ave+0.01。 然后,进行比较,如果钱数超过ave+0.01的就先变成ave+0.01,这些事必须
2013-10-31 01:20:32 2452
原创 UVa 10252 - Common Permutation
题目:统计两个小写字母构成的字符串中相同的不凡,按字典序输出。分析:简单题。字符串处理,先排序然后比较输出即可。注意:输入中有空串,使用gets读入数据。#include #include #include #include #include using namespace std;char a[1001],b[1001];int main() { whil
2013-10-31 00:17:55 1608
原创 UVa 10220 - I Love Big Numbers !
题目:计算给定数字n的阶乘的每位数字之和。分析:简单题、大整数。直接打表计算1000内的阶乘,对每位求和即可。#include #include #include using namespace std;int fact[1005][2600];int sums[1005];int main(){ //打表计算 memset( fact, 0, sizeof(f
2013-10-30 18:16:48 2200
原创 UVa 484 - The Department of Redundancy Department
题目:统计每个数字出现的次数。分析:简单题。直接储存奇数即可。注意:没有数据范围o(╯□╰)o。#include #include #include int number[10000];int counts[10000];int main(){ int n,count = 0,find; while ( ~scanf("%d",&n) ) { find =
2013-10-30 18:05:31 2948
原创 UVa 412 - Pi
题目:给你一种圆周率pi的近似求法,所及给出一组数,里面数对互质的概率p = 6/(p1*pi)。分析:简单题、数论。直接利用辗转相除求解即可。如果p为0则不能用来计算(分母是0)。#include #include #include int number[51];int gcd( int a, int b ){ return a%b?gcd( b, a%b ):b;
2013-10-30 18:03:40 1067
原创 UVa 10323 - Factorial! You Must be Kidding!!!
题目:计算阶乘在10000~6227020800之间的值,不在范围对应输出Under或者Over。分析:简单题、数论。因为13!=6227020800,7!注意:负数情况,奇数输出Overflow,偶数输出Underflow。#include #include #include int main(){ int n; while ( ~scanf("%d",&n) )
2013-10-30 17:43:12 1456
原创 UVa 686 - Goldbach's Conjecture (II)
题目:给定一个数字n问可以找出多少对素数,a,b使得a+b = n。分析:简单题、数论。首先计算素数,然后利用循环枚举素数加和,使得和值+1即可。#include #include using namespace std;int visit[32768];int prime[32768];int calcu[32768];int main(){ //打标计算327
2013-10-30 00:04:38 1496
原创 UVa 10260 - Soundex
题目:编码翻译,有些字母有对应的数字,有的没有,如果连续对应的数字相同只输出一个。分析:简单题。直接转化即可。#include #include #include using namespace std;int rep( char c ){ switch( c ) { case 'B': case 'F': case 'P': case 'V': ret
2013-10-29 16:11:02 1401
原创 UVa 568 - Just the Facts
题目:计算10000以内的数字的阶乘的最后的非零位。分析:简单题、数论、dp。通过地推,每次存储前一个数的最后6位,计算下一个数字即可。 (以为10000以内5^5 = 3125最多可以影响后5位)#include #include #include using namespace std;long long last[10005];int m
2013-10-29 15:26:23 1177
原创 UVa 583 - Prime Factors
题目:给你一个数字n,将它因式分解。分析:简单题、数论。因为数据范围是-2^31 ~ 2^31所以n的素数因子在区间[sqrt(n),n]上最多有1个; 所以计算[0,sqrt(n)]上的所有素数因子,除n剩下的部分不是1,就是那个最大的质因数了。#include #include #include using namespace std;int
2013-10-29 14:49:48 1325
原创 UVa 10970 - Big Chocolate
题目:给你一块M*N的巧克力,问把它切成最小单元需要最少切几刀,分开的就不能一起切了。分析:简单题。每次切割只能多产生一个部分,分成M*N个部分,必然要切M*N-1刀。注意:cin无限WA,scanf就AC了,o(╯□╰)o#include #include #include using namespace std;int main(){ long a,b; wh
2013-10-28 16:24:10 1588
原创 UVa 10019 - Funny Encryption Method
题目:给你一个数字,统计他是十进制数和十六进制数时转化为二进制后每个位上1的个数。分析:简单题。先按十进制算,然后统计每位上的数字转化成二进制即可。(十六进制每位对应4个二进制位)注意:用cin无限WA,scanf就AC了,o(╯□╰)o#include #include #include using namespace std;int bits( int a ){
2013-10-28 16:18:04 3544
原创 UVa 294 - Divisors
题目:计算一个给定区间中因数最多的数。分析:数论、组合数学。题目的数据的比较大,如果暴力一定会超时,那么就考虑利用其他方法求解。 我们将给定数字因式分解,那么因数的个数就是π(各质因子数+1)。(每个质因子取0~上限个) 因为数据时在10^9之内,所以质因数只能是33333以内的素数,利用筛法将素数打表计算即可。#include #
2013-10-28 15:55:32 3476
原创 UVa 10924 - Prime Words
题目:给出一个单词,a代表1,z代表26,A代表27,Z代表52,判断所有字母之和是不是素数。分析:简单题。首先利用筛法打表计算出前1040中的素数,然后计算判断即可。注意:本题中1是素数。#include #include #include using namespace std;int prime[1045];int value( char c ){ if
2013-10-27 13:31:40 1346
原创 UVa 10222 - Decode the Mad man
题目:解码对应的字符串。分析:简单题。通过观察每个字母是对应键盘上的左面的第二个,大写改成小写即可。注意:其他的字符按原来样式输出,如格式控制和数字。#include #include #include using namespace std;char temp[] = "qwertyuiop[]\\asdfghjkl;'zxcvbnm,./";char maps[2
2013-10-27 13:14:06 1735
原创 UVa 11332 - Summing Digits
题目:计算一个数字各个位上的数字和,如果不小于10就再次计算,直到小于10。分析:简单题。直接计算即可。#include #include #include #include using namespace std;int main(){ char temp[1005]; while ( cin >> temp ) { int sum = 0,count;
2013-10-26 05:40:12 1172
原创 UVa 439 - Knight Moves
题目:给出国际象棋棋盘中的两个点,求马从一个点跳到另一个点的最少步数。分析:简单题、搜索、最短路。利用bfs去接即可。#include #include #include #include using namespace std;typedef struct qnode { int x,y,d; qnode( int a, int b, int c ){
2013-10-26 05:31:02 2780
原创 UVa 10106 - Product
题目:大整数乘法。分析:简单题、模拟。利用数组模拟即可,逆向储存方便计算。备注:╮(╯▽╰)╭今天rp过低啊,各种水题无限WA。#include #include #include #include using namespace std;int a[305];int b[305];int c[605];int main(){ char temp[305]
2013-10-25 16:44:17 1262
原创 UVa 445 - Marvelous Mazes
题目:给出一串字符输出对应编码。 如果是数字就计数,连续的数字加和,然后输出对应个数的后面的字母。如果是'!'或者换行就换行; 如果是'b'就输出空格,如果是'*'和字母就直接输出。分析:简单题。字符串处理。#include #include #include using namespace std;void output
2013-10-24 12:11:24 849
原创 UVa 572 - Oil Deposits
题目:统计地图上的Oil的区域有几块。分析:搜索,简单题。利用foodfill计算即可。#include #include #include using namespace std;char map[105][105];int dxy[8][2] = {{1,0},0,1,-1,0,0,-1,1,1,1,-1,-1,1,-1,-1};int dfs( int x
2013-10-23 19:48:12 875
原创 UVa 10469 - To Carry or not to Carry
题目:异或运算。分析:简单题。位运算,异或。#include #include #include using namespace std;int main(){ unsigned int a,b; while ( ~scanf("%u%u",&a,&b) ) { printf("%u\n",a^b); } return 0;}
2013-10-23 19:13:19 1010
原创 UVa 10107 - What is the Median?
题目:不断的输入整数,输出中值,如果中间有两个数,输出他们平均值的整数部分。分析:简单题。因为数据不大,每次输入数据后,排序即可。#include #include #include #include using namespace std;long Data[10005];int main(){ int n,count = 0; while ( ~scanf(
2013-10-23 18:32:40 1651
原创 UVa 10327 - Flip Sort
题目:求交换相邻元素排序的最小交换次数。(10810类似物)分析:排序最少交换次数:1.相邻交换,为逆序数;随意交换,为总数减环个数。 证明:每次相邻交换时,逆序数减1或者加1,所以最优情况下,逆序数为交换次数下界。 存在性,每次找到逆序对交换即可构造出一种下界。#include #include #inc
2013-10-22 18:23:59 1249
原创 UVa 369 - Combinations
题目:大组合数计算。分析:简单题、组合数学、大整数模拟。 计算组合数的方法很多,本题数据量不是很大,直接利用地推公式打标即可。#include #include #include #include using namespace std;int C[101][101][51];int main(){ memset( C, 0, sizeo
2013-10-22 16:14:18 1588
原创 UVa 10057 - A mid-summer night's dream.
题目:给出n个数,求一个数A,使得所有数和它的差的绝对值的和最小。 求出最小的A,和n个数中可以满足A的个数,以及可以满足A的整数个数。分析:简单题。中位数,同10041.#include #include #include #include #include using namespace std;int s[1000005];int m
2013-10-22 04:46:05 4395 7
原创 UVa 10041 - Vito's Family
题目:有一些一维的点,问取一点,让它到其他点的距离和最小。分析:简单题。中位数。#include #include #include #include #include using namespace std;int s[505];int main(){ int n,r; while ( ~scanf("%d",&n) ) while ( n -- ) {
2013-10-22 04:20:24 1248
原创 UVa 10110 - Light, more light
题目:有一串灯,编号从1到n全都是关闭的,你每次走过这串灯时,把可以整除次数i的编号的灯取相反状态,问n次后n好灯的状态。分析:简单题。本题意思是判断n的因数的奇偶性。只有平方数的因数是奇数个,判断即可。注意:使用long以上类型,int会wa。#include #include #include #include using namespace std;int ma
2013-10-22 03:49:47 1342
原创 UVa 575 - Skew Binary
题目:输出给定禁制数字的10进制数。分析:简单题。按照定义,编码方式为 sum(a[i]*(2^(l-i) - 1)),其中l是串长。#include #include #include #include using namespace std;int main(){ char temp[100]; while ( gets(temp) && temp[0] !=
2013-10-21 03:23:28 793
原创 UVa 10008 - What's Cryptanalysis?
题目:统计字母出现的次数。分析:简单题。简单的字符串处理。#include #include #include #include #include using namespace std;typedef struct dnode{ char c; int n;}data;data D[26];int cmp( data a, data b ){ if
2013-10-20 06:08:48 1923
原创 UVa 10300 - Ecological Premium
题目:给你面积和友好度,求乘积的和。分析:简单题。参数一三乘积求和即可。#include #include #include using namespace std;int main(){ int n,m,a,b,c,sum; while ( cin >> n ) while ( n -- ) { cin >> m; sum = 0; while (
2013-10-19 00:07:40 1011
原创 poj 3521 Geometric Map
题目:给你平面上的n条线段,这些线段分成两类: 1.街道边,两个端点都与其他线段相连,是可以行走的路径; 2.标记边,只有一个端点和其他线段相连,标记路径的方向(角度大于90方向的可以通行)。 计算起点到终点的最短距离。输出路径上的点,用0结束;如果不存在输出-1。分析:计算几何、最短路。预处理有点麻烦的题目。由于分
2013-10-18 23:16:45 1053
原创 UVa 10038 - Jolly Jumpers
题目:给出n个数,判断相邻的数字只差的绝对值序列是否是1 ~ n-1。分析:简单题。直接计算判断即可。#include #include #include #include using namespace std;int have[3003];int data[3003]; int main() { int n; while (
2013-10-18 18:04:35 1216
原创 UVa 11936 - The Lazy Lumberjacks
题目:判断给定三条边是否能构成三角形。分析:计算几何、简单题。利用两边之和大于第三边判断即可。#include #include #include using namespace std; int main() { int n,a,b,c; while ( cin >> n ) while ( n-- ) {
2013-10-18 17:49:11 886
原创 poj 3433 Road Accident
题目:给你两辆车的左后方和左前方的坐标,车宽和速度,将车看成矩形并分成四部分,问两辆车相撞的位置编号。分析:计算几何、线与线的关系判断。 首先,先将分别运动的两车转移到相对参考系,利用速度向量做差即可。 然后,判断两车相撞,可以分成三种情况:点对点,点对线,线对线。由于点撞到点,一定撞到线上。
2013-10-17 21:56:05 997
原创 poj 2354 Titanic
题目:泰坦尼克(⊙v⊙);通过无线电测量冰山的位置,给出船和冰山的精度纬度,求距离。分析:计算几何、大地坐标系。利用公式计算即可。圆心角:acos(cos(la1)*cos(la2)*cos(lo1-lo2)+sin(la1)*sin(la2)。注意:1.输入格式好恶心;2.用c++救AC了g++无限WA。。。#include #include #include #inclu
2013-10-17 00:05:29 1103
原创 UVa 10577 - Bounding box
题目:给你正多边形的三个点,求出能够包裹这个凸多变的平行于坐标轴的矩形的最小面积。分析:计算几何、简单题。利用已知三点确定两条线段,求两条线断的垂直平分线,计算出外接圆圆心坐标和半径。 将a点作为起点,利用三角函数的和角函数计算出每个点的位置。 cos(a`) = cos(a+da) = cos(a)*cos(
2013-10-16 20:54:04 1114
SOFA: A Multi-Model Framework for Interactive Physical Simulation
2018-06-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人