1.求 a,b 不能组合出的最大的数,以及个数
http://acm.hdu.edu.cn/showproblem.php?pid=1792
结论:
①:不能组合出的最大数: ab−a−b
②:个数: 2(a−1)(b−1)
没怎么看懂的证明:
http://blog.sina.com.cn/s/blog_79b832820100riqp.html
我想了一哈, ab是两个互质的数的最小公倍数,而最小公倍数的意思就是是两个的倍数,那么这个时候减一个 a,那肯定就不是 b 的倍数了,那再减一个 a ,那也就不是 a 的倍数了T_T,这样感觉很有道理哈哈哈哈,但是我不能给出严谨的证明~
至于个数为什么是那么多还没有直观的理解~
2.斐波那契数列平方和
结论:
f2(1)+f2(2)+f2(3)+f2(4)+f2(5)+...+f2(n)=f(n)∗f(n+1)
3.n的阶乘在m进制下末尾0的个数
没有懂原理。。。
#include"bits/stdc++.h"
#define out(x) cout<<#x<<"="<<x
using namespace std;
typedef long long LL;
LL solve(LL n,LL m)
{
LL res=0;
while(n)
{
res+=n/m;
n/=m;
}
return res;
}
int main()
{
LL N,M;
while(cin>>N>>M)
{
LL ans=1e18;
for(LL i=2;i*i<=M;i++)
{
if(M%i==0)
{
LL cnt=0;
while(M%i==0)M/=i,cnt++;
ans=min(ans,solve(N,i)/cnt);
}
}
cout<<ans<<endl;
}
}
4.格点多边形面积(皮克定理)
n1 为内部格点的数目
n2 为边上格点的数目
S=n1+2n2−1
#5.一个递推式
{a2n+1=1a2n=an+1
sum(n)=n+sum(2n)