摘要:
题意 给出n,表示这是一个正n边形,并给出顺时针标号的n1,n2个点的坐标。输出所有点的坐标。分析 计算几何。 主体思路: 利用n1,n2计算出这个正n边行的半径,进而求得中心坐标; 再利用向量旋转,从中心坐标开始,依次获得各个点坐标。 有关向量旋转参见百度文库http://wenku.baidu.com/view/3f95940cbb68a98271fefa75.html 主要用到的就是x1=x*cosθ-y*sinθ y1=x*sinθ+y*cosθ 具体在程序中的变量以下图为例:Accepted Code 1 { 2 PROBLEM:sg... 阅读全文
摘要:
题意 给出三个数n,a1,b1,表示n|a1*x+b1*y对任意(x,y)成立。现在求出有多少对(a2,b2)使得n|a2*x+b2*y也成立,并打印所有符合要求的(a2,b2)分析 因为a1,b1是满足要求的,当a2=(k*a1)%n,b2=(k*a2)%n为满足条件的a2b2,直到(a2,b2)=(a1,b1)结束Accepted Code 1 /* 2 PROBLEM:sgu119 3 AUTHER:Rinyo 4 MEMO:数学 5 */ 6 7 8 #include<cstdio> 9 #include<algorithm>10 using names... 阅读全文
摘要:
题意 定义f(n)为n各位数字之和,如果n是各位数,则n个数根是f(n),否则为f(n)的数根 现在给出n个Ai,求出A1*A2*…*AN+ A1*A2*…*AN-1+ … + A1*A2+ A1这个式子的数根 多组数据分析 首先,要知道这样一个结论: 任何一个整数模9同余于它的各数位上数字之和 具体证明过程如下: 设自然数N=a[n]a[n-1]…a[0],其中a[0],a[1]、…、a[n]分别是个位、十位、…上的数字 再设M=a[0]+a[1]+…+a[n] 求证:N≡M(mod 9). 证明: ∵ N=a[n]a[n-1]…a[0]=a[n]*10^n+a[n-... 阅读全文
摘要:
题意 给出n,m,k 接下来有n个数ai,求这些数中有多少个ai*m能被k整除 输出个数分析 首先将k分解质因数,p[i]存的是第i个因子,num[p[i]]表示p[i]这个因子有多少个 将ai*m分解质因数,如果ai*m的质因数中,没有某个p[i],或质因数中某个p[i]的个数少于k中p[i]的个数(即num[p[i]]),那么,这个数就不符合要求 只有这个数的质因数包含了所有p[i],并且每个p[i]都至少有num[p[i]]个,则这个数是可以的,答案+1 在处理这道题上,我们可以1~len(k的质因数个数)循环,对每个数now进行计算,如果当前的num[p[i]]>t*... 阅读全文
摘要:
题意 首先定义超级素数:2 3 5 7...这些都是素数,当这个数是素数且这个数在这个素数列里的第素数个位置,则为超级素数 例如,3在第2个,是超级素数;7在第4个,由于4不是素数,所以7不是超级素数 现在给定一个数n,求n最少能被几个超级素数之和表示,输出个数,并输出这几个超级素数 如果不能表示为几个超级素数之和,输出0分析 首先,利用筛法可以求出1~n内的超级素数,显然,需要用到的素数绝对不会超过n (当然你也可以直接打表) 预处理做好了,下面就是完全背包了 f[i]表示i最少能由f[i]个超级素数表示 所求即为f[n] 初始f[0]=0 方程为f[j]=min{f[... 阅读全文
摘要:
题意 已知2001.1.1是周一 请你求出2001.m.n是周几 如果m,n不合法 输出Impossible分析 开一个数组记录一下每个月的日子,然后模拟 通过循环加到当前的日子 mod 7 即可求出为周几 这题让我想到了usaco的那道星期五是几的题....Accepted Code 1 /* 2 PROBLEM:sgu 115 3 AUTHER:Rinyo 4 MEMO:模拟 5 */ 6 7 #include<cstdio> 8 const int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; ... 阅读全文
摘要:
题意 百慕大的每一座城市都坐落在一维直线上。这个国家的政府决定建造一个新的广播电视台。经过了许多次试验后,百慕大的科学家们提出了一个结论,在每座城市的不满意度等于这座城市的市民数与这座城市与广播电视台的距离的乘积。找到这个一维直线上的一点来建造广播电视台,使得所有城市的不满意度的和最小分析 易证,这个广播电视台必然会建在某个城市点上,否则必然不是最优解 当每个城市都是1个人时,只有当电视台建在中间那个城市,所有人到电视台距离之和才为最小 (奇数个城市时是中间的那个城市;偶数个城市时则为中间两个城市中的任意一个即可。) 但是,每个城市不止一人,该怎么处理呢? 很容易,把每个城市的若干... 阅读全文
摘要:
题意 给出一个数n,如果n能分解成两个质数相乘,则输出Yes,否则输出No 多case.分析 首先先用筛法预处理出1~40000以内的质数,共tot个 然后for (1~tot)循环,如果n能被prime[i]整除,并且除数也是质数,则为Yes,否则为NoAccepted Code 1 /* 2 PROBLEM:sgu113 3 AUTHER:Rinyo 4 MEMO:模拟 质数 5 */ 6 7 #include<cstdio> 8 int prime[40030]; 9 int isprime(int x)10 {11 if (x<2) retur... 阅读全文
摘要:
题意 给出一个a一个b,求a^b - b^a分析 高精度不解释 需要写三个高精度: mult-计算乘法 compare-比较两个数的大小 minus-计算减法Accepted Code 1 { 2 PROBLEM:SGU112 3 AUTHER:Rinyo 4 MEMO:高精度 模拟 5 } 6 Program sgu112; 7 Type 8 Rec = REcord 9 len:Longint;10 a:Array[0..1130]Of Longint;11 End;12 Var13 a,b,aa,bb,i:Lon... 阅读全文
摘要:
题意 给出一个数n,求sqrt(n) (1≤n≤101000)分析 题意很简单,就是开一个数的平方 在网上看了看一些方法,一下摘自“风中落叶”hi.baidu.com/xiamengy1.举例上式意为65536的开平方为256。手开方过程类似于除法计算。为了方便表述,以下仍称类似位置的数为“被除数”、“除数”、“商”。以65536为例,其具体计算过程如下:Step1:将被开方数(为了形象,表述成“被除数”,此例中即为65536)从个位往高位每两位一断写成6,55,35的形式,为了方便表述,以下每一个“,”称为一步Step2:从高位开始计算开方。例如第一步为6,由于22=4<6<9= 阅读全文