本文共 1113 字,大约阅读时间需要 3 分钟。
【题A】
【题解】
易得,木棍能到达的点的距离原点的范围为[max(0,abs(l1-l2),l1+l2],分类讨论即可。
【代码】
#includeusing namespace std;int main(){ int l1,l2,t; scanf("%d%d%d",&l1,&l2,&t); double l=abs(l1-l2),r=l1+l2; while(t--) { double x,y; scanf("%lf%lf",&x,&y); double d=sqrt(x*x+y*y); double ans; if(d r) ans=d-r; else ans=0; printf("%.8lf\n",ans); } return 0;}
【题G】
【题解】
根据唯一分解定理,任意一个大于1的正整数都能表示成若干个质数的乘积,且表示的方法是唯一的。换句话说,一个数能被唯一地分解成质因数的乘积。
公式:n = P1^a1 * P2^a2 * …………* (P1 < P2 < ……Pn);
利用类似素数一般筛即埃式筛法来对因子数计数,取一个数i,并令i的倍数的因子数+1。
(对素数筛感兴趣的传送门这里:)
【代码】
#includeusing namespace std;const int maxn=1e6+1;int ans[maxn],cnt[maxn]={0};int main(){ memset(ans,-1,sizeof(ans)); for(int i=1;i
【题J】
【题解】
易得,每一位只有在(0,0)(0,1)(1,0)的三种情况时满足条件,答案即为3^M。
【代码】
#includeconst int mod=998244353;typedef long long ll;ll quick_pow(ll a,ll b){ ll tmp=a; ll sum=1; while(b) { if(b&1) sum=sum*tmp%mod; tmp=tmp*tmp%mod; b>>=1; } return sum;}int main(){ int m; scanf("%d",&m); printf("%lld\n",quick_pow(3,m)); return 0;}
转载地址:http://ofben.baihongyu.com/