hdoj2049
组合数公式的运用和错排公式的运用
#include <cstdio>
#include <algorithm>
using namespace std;
int main(void) {
int C;
long long a[20 + 1] = {0};
a[2] = 1;
for(int i = 3; i <= 20; i++) {
a[i] = (a[i - 1] + a[i - 2]) * (i - 1);
}
while(scanf("%d", &C) != EOF) {
for(int i = 0; i < C; i++) {
int N, M;
scanf("%d %d", &N, &M);
long long up = 1;
long long down = 1;
for(int i = N; i >= M + 1; i--) {
up *= i;
//printf("%lld\n", up);
}
for(int i = N- M; i >= 1; i--) {
down *= i;
//printf("%lld\n", down);
}
long long result = up / down * a[M];
printf("%lld\n", result);
}
}
return 0;
}
hdoj 2050 折线分割平面
#include<stdio.h>
int guilv(int n)//也可以用递归实现,不过递归太耗时
{
int sum=2,i;//sum初始化为2
for(i=2;i<=n;i++)
//sum+=(((i-1)*2+1)*2-1);
sum+=4*i-3;
return sum;
}
int main()
{
int i,j,n;
scanf("%d",&n);
while(n--)
{
scanf("%d",&i);
j=guilv(i);
printf("%d\n",j);
}
return 0;
}
hdoj 2051 进制转化
#include<iostream>
using namespace std;
int main(){
int n,a[50],count;
while(cin >> n)
{
count=0;
while(n)
{
a[count]=n%2;
n/=2;
count ++;
}
for(int i = count-1;i >= 0;i--)
{
cout << a[i];
}
cout << endl;
}
system("pause");
}
hdoj 2056
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int i,j,k,n,m;
double x[5],y[5],a[5],b[5],s;
while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x[1],&y[1],&x[2],&y[2],&x[3],&y[3],&x[4],&y[4])==8)
{
s=0;
for(i=1;i<=4;i++)
{
a[i]=x[i];
b[i]=y[i];
}//a[]、b[]数组记录原来数据
sort(x+1,x+5);
sort(y+1,y+5);
if(x[3]>a[2]&&x[3]>a[1]||x[3]>a[3]&&x[3]>a[4]||y[3]>b[1]&&y[3]>b[2]||y[3]>b[3]&&y[3]>b[4])
; //判断两个矩形没有相交
else
s=(x[3]-x[2])*(y[3]-y[2]);
printf("%.2lf\n",s);
}
return 0;
}