版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lidengdengter/article/details/82936549
D A Simple Math Problem HDU - 5974 (数学)
已知: ( lcm(x,y) 代表x和y的最小公倍数),求x和y的值。
设x*y=k*b,k即为gcd(x,y),即
因为互质,则其和与积也互质,即k=gcd(a,b),则k已知,计算方程组(1)即可,详见代码。
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){
return b==0?a:gcd(b,a%b);
}
int main(){
ll a,b;
while(~scanf("%lld%lld",&a,&b)){
ll k=gcd(a,b);
b*=k;
ll tmp=sqrt(a*a-4*b);
ll x=(a+tmp)/2;
ll y=(a-tmp)/2;
if(x>y) swap(x,y);
if(x*y!=b)
printf("No Solution\n");
else printf("%lld %lld\n",x,y);
}
return 0;
}
H To begin or not to begin HDU - 5978 (数学+概率+思维)
游戏有k个黑球,1个红球,拿到红球即胜利,计算先手是否有优势赢游戏。
先手拿到红球的概率P为:
k=1: ans=0
k=2: ans=1
k=3: ans=0
k=4: ans=1
k=5: ans=0
……
可以发现当k为奇数时先手无优势,当k为偶数时有优势。
#include<cstdio>
int main(){
int k;
while(~scanf("%d",&k)){
if(k&1) printf("0\n");
else printf("1\n");
}
return 0;
}
给出多边形中每个三角形的顶角,求多边形面积,只要求出每个三角形面积求和即可。
注意sin()里的是弧度值,要先把角度转换为弧度
#include<cstdio>
#include<cmath>
#define PI 3.1415927
int main(){
int n,r;
while(~scanf("%d%d",&n,&r)){
double tmp=0;
while(n--){
double deg;
scanf("%lf",°);
tmp+=0.5*r*r*sin(deg*PI/180);
}
printf("%.3lf\n",tmp);
}
return 0;
}
给n个数,每个数都可以拆开成一个32位的2进制
每8位一个字节 ,每个字节的2进制数换算成十进制时有多少个97,见代码
#include<cstdio>
int main(){
int n;
while(~scanf("%d",&n)){
int ans=0;
while(n--){
int val;
scanf("%d",&val);
if(val==0) continue;
while(val){
if(val%(1<<8)==97) ans++;
val/=(1<<8);
}
}
printf("%d\n",ans);
}
return 0;
}