2019西北工业大学程序设计创新实践基地春季选拔赛(重现赛)
A:
我直接上模板了。。。然而可以切割弦定理轻易解决。
割线乘积=切线的平方
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 int main() { 5 int x0,y0,r,x1,y1,y2; 6 scanf("%d%d%d%d%d%d",&x0,&y0,&r,&x1,&y1,&y2); 7 long long a=1ll*(x0-x1)*(x0-x1)+1ll*(y0-y1)*(y0-y1); 8 long long ans=a-1ll*r*r; 9 printf("%lld",ans); 10 }
B:水题
D:
Cocoa想知道这个不定方程的正整数解和非负整数解各有几个。
隔板问题:
正整数解:分成n个1,然后插板,共C(m-1,n-1)个,
非负整数解:每个数加1,然后插板,共C(n+m-1,m-1)个
注意溢出,还有就是递推求阶乘记得 f[0]=1。
还有就是逆元和取模了。
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=3000010; 4 const int mod=1e9+7; 5 typedef long long ll; 6 7 ll f[maxn]; 8 ll my_pow(ll a,ll b,ll mod) { 9 ll ans=1; 10 ll tmp=a%mod; 11 while(b) { 12 if(b&1) ans=(ans*tmp)%mod; 13 tmp=(tmp*tmp)%mod; 14 b>>=1; 15 } 16 return ans; 17 } 18 19 int main() { 20 int m,n; 21 scanf("%d%d",&m,&n); 22 f[0]=1; 23 for(int i=1;i<=n*2;i++) f[i]=(f[i-1]*i)%mod; 24 printf("%d " ,(((f[n-1]*my_pow(f[m-1],mod-2,mod))%mod)*my_pow(f[n-m],mod-2,mod))%mod); 25 printf("%d",(((f[n+m-1]*my_pow(f[m-1],mod-2,mod))%mod)*my_pow(f[n],mod-2,mod))%mod); 26 }
F:
根据题意和期望定义。直接求lL-R区间和,就可以了。
可能是太依靠模板,直接上的线段树,没写前缀和。。。
埋骨何须桑梓地,人生无处不青山