随笔分类 -  数论

sgu105
摘要:1 #include 2 int main() 3 { 4 int n; 5 while(scanf("%d",&n)!=EOF) 6 { 7 if(n%3==0) 8 printf("%d\n",n/3*2); 9 else if((n+1)%3==0)10 printf("%d\n",n/3*2+1);11 else printf("%d\n",n/3*2);12 }13 return 0;14 }muhaha 阅读全文
posted @ 2013-08-05 20:10 Ac_国士无双 阅读(168) 评论(0) 推荐(0)
hdu2643 ( 第二类斯特灵数 )
摘要:题目要求算出大小关系的所有情况,我们把相等的放在一起,他们之间没有大小关系,形成分组,这个就是由第二类斯特灵数算出来的,在对分好的组进行全排列。 1 #include 2 typedef long long i64; 3 int main() 4 { 5 int T,n; 6 i64 s[150][150],f[150]; 7 scanf("%d",&T); 8 f[0]=1; 9 for(int i=1;i<=100;i++)10 {11 s[i][i]=1;s[i][1]=1;f[i]=f[i-1]*i%20090126;12... 阅读全文
posted @ 2013-07-19 18:25 Ac_国士无双 阅读(248) 评论(0) 推荐(0)
hdu3625 ( 第一类斯特灵数 )
摘要:在钥匙与房间的所有情况中,我们知道当手中没有未开启的房间门的钥匙时我们需要破坏一扇门。在已开启的门中,钥匙作为指示的方向,是房间号码形成了一个环。而针对每种情况,形成的环数就是所要破坏的门的数量。所以要找寻k以内的环数的情况,并且因为1号门不能破坏,所以要减去,以1号门为单独的一个环且符合情况的数量。 1 #include 2 #include 3 typedef long long i64; 4 int main() 5 { 6 i64 s[25][25],f[25]; 7 int T,n,k,i,j; 8 memset(s,0,sizeof(s)); 9 s... 阅读全文
posted @ 2013-07-19 17:32 Ac_国士无双 阅读(197) 评论(0) 推荐(0)
UVa11426
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 18 using namespace std;19 typedef pair II;20 typedef vector IV;21 typedef vector IIV;22 typedef vector BV... 阅读全文
posted @ 2013-07-16 14:00 Ac_国士无双 阅读(205) 评论(0) 推荐(0)
UVa136
摘要:枚举出来的结果,这是看别人写的代码 1 #include 2 int main() 3 { 4 int a[2000],m2=0,m3=0,m5=0,i,t; 5 a[0]=1; 6 for(i=1;i3*a[m3]) 9 t=a[m3]*3;10 else11 t=a[m2]*2;12 if(t>a[m5]*5)13 t=a[m5]*5;14 15 if(t == 2*a[m2]) m2++;16 if(t == 3*a[m3]) m... 阅读全文
posted @ 2013-07-12 11:20 Ac_国士无双 阅读(228) 评论(0) 推荐(0)
UVa11401
摘要:计算不符合三角形的组合数,设x为最小边,y+z>x,所以要求y-z>=x这样的组合有多少个(为保证不重复设x 2 typedef long long i64; 3 int main() 4 { 5 i64 i,n,sum; 6 while(scanf("%lld",&n)!=EOF&&n>=3) 7 { 8 sum=0; 9 for(i=1;i<=n/2;i++)10 sum+=(n-2*i+1)*(n-2*i)/2;11 printf("%lld\n",n*(n-1)*(n-2)/6-sum);12 }1 阅读全文
posted @ 2013-06-30 15:20 Ac_国士无双 阅读(182) 评论(0) 推荐(0)
UVa 10079
摘要:第一条线将圆分为两部分,以后每条线都会与已存在的k条线相交,通过(k+1)个区域,将每个区域分为两部分,即推导出公式n*(n+1)/2+1。 1 #include 2 typedef long long i64; 3 int main() 4 { 5 i64 n; 6 while(scanf("%lld",&n)!=EOF) 7 { 8 if(n<0) break; 9 printf("%lld\n",n*(n+1)/2+1);10 }11 return 0;12 } 阅读全文
posted @ 2013-06-29 15:43 Ac_国士无双 阅读(150) 评论(0) 推荐(0)
基本计数方法
摘要:计数方法包括加法原理和乘法原理。乘法原理是加法原理的特殊情况,加法原理在分类有重复的情况下,可以使用容斥原理。加法原理:做一件事有n个方法,第i个方法有pi种方案,则一共有p1+p2+……+pn种方案。乘法原理:做一件事有n个方法,第i个步骤有pi种方案,则一共有p1p2……pn种方案。几个常见的计数问题。组合排列:性质一:C(n ,0)=C(n ,n)=1性质二:C(n ,k)=C(n ,n-k)性质三:C(n , k)+C(n ,k+1) =C (n+1,k+1)性质四:C(n ,k+1)=C(n ,k)*(n-k)/(k+1)有重复元素的全排列:n1!n2!……nk!x=n!可重复选择的 阅读全文
posted @ 2013-06-28 21:35 Ac_国士无双 阅读(428) 评论(0) 推荐(0)
hdu1695
摘要:求两段区间中最大公约数为k的数字的对数,下界除以k后就会变成,求区间中与n互质的数字的对数。主要错在了两个地方,k=0和b,d大小的判断。 1 #include <algorithm> 2 #include <iostream> 3 #include <iomanip> 4 #include <cstring> 5 #include <cstdlib> 6 #include <climits> 7 #include <sstream> 8 #include <fstream> 9 #include 阅读全文
posted @ 2013-06-11 14:38 Ac_国士无双 阅读(292) 评论(0) 推荐(0)
UVa10325
摘要:容斥原理,求会被去掉的数字的个数,在ai组成的集合中用最小公倍数作为除数。 1 #include <algorithm> 2 #include <iostream> 3 #include <iomanip> 4 #include <cstring> 5 #include <cstdlib> 6 #include <climits> 7 #include <sstream> 8 #include <fstream> 9 #include <cstdio>10 #include <st 阅读全文
posted @ 2013-06-11 14:28 Ac_国士无双 阅读(163) 评论(0) 推荐(0)
UVa914
摘要:区间找素数,求差。(if( len <=1) 这里把<漏了,Runtime error,原因:ans是空的。 1 #include <algorithm> 2 #include <iostream> 3 #include <iomanip> 4 #include <cstring> 5 #include <cstdlib> 6 #include <climits> 7 #include <sstream> 8 #include <fstream> 9 #include <cstdi 阅读全文
posted @ 2013-06-11 09:32 Ac_国士无双 阅读(188) 评论(0) 推荐(0)
UVa12465
摘要:求能使a,b同余的正整数m的个数,即a,b差的因子个数。 1 #include <algorithm> 2 #include <iostream> 3 #include <iomanip> 4 #include <cstring> 5 #include <cstdlib> 6 #include <climits> 7 #include <sstream> 8 #include <fstream> 9 #include <cstdio>10 #include <string>1 阅读全文
posted @ 2013-06-10 18:01 Ac_国士无双 阅读(161) 评论(0) 推荐(0)