D - A Simple Math Problem
题意:给定正整数a,b,寻找是否有满足条件的x,y
X+Y=a;
lcm(X,Y)=b;
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<cmath> #include<cstdio> #include<iostream> using namespace std; typedef long long ll; int gcd(int a,int b) { if(b==0) return a; else return gcd(b,a%b); } int main() { int a,b,x,y,k1,k2,m,d; while(cin>>a>>b) { m=gcd(a,b); d=a*a-4*m*b; if(d<0) { cout<<"No Solution"<<endl; } else { int d1=sqrt(d); if(d1*d1!=d) { cout<<"No Solution"<<endl; } else { x=(a-d1)/2; y=(a+d1)/2; cout<<x<<' '<<y<<endl; } } } return 0; }
H - To begin or not to begin
题意:给K个黑球和一个红球,Bob和Alice不放回的从中取球,先拿到红球的胜利
Alice先开始,如果先开始取的赢的概率大输出1,先开始取的赢的概率小输出2,平局输出3
n=k+1
Alice获胜的概率为
k为奇数(n为偶数)p=1/n+ (n-2)/2 * 1/n = 1/2;
k为偶数(n为奇数)p=1/n +(n-1)/2 * 1/n =(n+1)/2;
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> using namespace std; int main(){ int k; while(scanf("%d",&k)!=EOF){ if(k&1){ cout<<"0"<<endl; }else{ cout<<"1"<<endl; } } return 0; }
I - Convex
题意:输入n和d,表示点的数量和它们到原点的距离(所有点到原点的距离都相等)。
再输入n个整数,表示角度。n个数的和总是360。
将每个三角形面积相加即为n边形的面积。
圆里三角形的面积为S=1/2*r*r*sin(弧度);
弧度=角度*PI/180;
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<cmath> #include<cstdio> #include<iostream> using namespace std; #define PI 3.1415926 int main(){ int n,d; double num; while(scanf("%d %d",&n,&d)!=EOF){ double sum=0; for(int i=1;i<=n;i++){ cin>>num; num=num*PI/180; sum+=d*d*sin(num)/2; } printf("%.3f\n",sum); } return 0; }
J - Find Small A
题意:给n个数,每个数都可以由32位的二进制数表示,每八位可以表示一个字符,
将这八位转换为十进制判断是否等于97(a的ascii码),计算可以找到多少个a
因为2^8=256,对于输入的每个数num,若num%256==97,则counts++
然后num=num/256,直到num=0;
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include<iostream> #include<cstdio> #include<cmath> #include<string> #include<cstring> using namespace std; int main(){ int n; long long num; while(scanf("%d",&n)!=EOF){ long long counts=0; while(n--){ cin>>num; while(num){ if(num%256==97) counts++; num=num/256; } } cout<<counts<<endl; } return 0; }