QFNU-ACM 2020.4.11 组队赛 (2020-4-11)

D - A Simple Math Problem

解题思路:给定两个正整数a和b,求出满足条件的合适的X和Y: X + Y =a最小公倍数(X, Y) =b

数学不好的我留下了泪水qwq,大概就是gcd(x,y)==gcd(a,b),得x*y=gcd(a,b)*b;与x+y=a联立,解得

AC代码:

#include<cmath>
#include<cstdio>
#include<algorithm>
#include<string>
#include<vector>
#include<iomanip>
#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

思路:只有一个黑球的时候,谁先抽概率都一样,其余情况,先抽的人赢的概率大

AC代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int main(){
       int k;
    while(cin>>k){
        if(k&1){
            cout<<"0"<<endl;
        }else{
            cout<<"1"<<endl;
        }
    }
    return 0;
}

I - Convex

解题思路:化成一个一个三角形,根据面积S=1/2 A*B*sinC

AC代码:

#include<cmath>
#include<cstdio>
#include<algorithm>
#include<string>
#include<vector>
#include<iomanip>
#include<iostream>
using namespace std;
typedef long long ll;
int main()
{
    int n,m,x,y,i;
    double a[10];
    while(cin>>n>>m)
    {   double sum=0;
        for(i=0;i<n;i++){
            cin>>a[i];
            a[i]=a[i]*3.1415926/180;
            double b=sin(a[i]);
            sum+=b*m*m/2;
        }
        printf("%.3f\n",sum);
    }
    return 0;
}

J - Find Small A

解题思路:众所周知,字符a的ASCII码是97。现在,找出一组给定的数字中有多少个字母“a”。请注意,这里的数字是由计算机中的32位整数给出的。也就是说,1位代表4个字符(一个字符由8位的二进制数字表示)。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int main(){
    int n;
    long long num;
    while(cin>>n){
        long long counts=0;
        while(n--){
            cin>>num;
            while(num){
                if(num%256==97)
                counts++;
                num=num/256;
            }
        }
        cout<<counts<<endl;
    }
      return 0;
}

 

posted @ 2020-04-17 22:08  一只幽灵飘过  阅读(125)  评论(0编辑  收藏  举报