杭电 HDOJ(2001——2010)
目录
2001: 计算两点间距离
分析:坐标间两点间的距离:
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main()
{
double a,b,c,d;
while(cin>>a>>b>>c>>d)
{
cout<<fixed<<setprecision(2)<<sqrt((a-c)*(a-c)+(b-d)*(b-d))<<endl;
//sqrt((a-c)*(a-c)+(b-d)*(b-d))等价于sqrt(pow(a-c,2)+pow(b-d,2))
}
return 0;
}
2002:计算球的体积
分析:半径是R的球的体积 计算公式是:V=(4/3)πr³
#include<iostream>
#include<iomanip>
#define PI 3.1415927
using namespace std;
int main()
{
double r,a;
while(cin>>r)
{
a=PI*(4.0/3)*r*r*r;//r*r*r等价于pow(r,3)
cout<<fixed<<setprecision(3)<<a<<endl;
}
return 0;
}
2003:求绝对值
分析:
方法1:绝对值函数——abs()
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double a;
while(cin>>a)
{
a=abs(a);
cout<<fixed<<setprecision(2)<<a<<endl;
}
return 0;
}
方法2:三目运算符
a = a < 0 ? - a : a;
2004:成绩转换
方法1:用switch
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a;
while(cin>>a)
{
if(a>=0&&a<=100)
{
a=a/10;
switch(a)
{
case 10:
case 9:
cout<<"A\n";break;
case 8:
cout<<"B\n";break;
case 7:
cout<<"C\n";break;
case 6:
cout<<"D\n";break;
default:
cout<<"E\n";break;
}
}
else
cout<<"Score is error!\n";
}
return 0;
}
方法2:用if…else if…else
if (t>=90 && t<=100)
cout<<"A\n";
else if (t>=80 && t<90)
cout<<"B\n";
else if (t>=70 && t<80)
cout<<"C\n";
else if (t>=60 && t<70)
cout<<"D\n";
else if (t>=0 && t<=59)
cout<<"E\n";
else
cout<<"Score is error!\n";
2005:第几天?
需要区分闰年和平年
#include<iostream>
using namespace std;
int main() {
int year, month, day;
char c;
while (cin >> year >>c>> month >>c>> day)
{
int sum = 0;
int arr[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
arr[1] = 29;
for (int i = 0; i < month - 1; i++)
{
sum += arr[i];
}
sum += day;
cout << sum << endl;
}
return 0;
}
2006:求奇数的乘积
#include<iostream>
using namespace std;
int main()
{
int n,a,b;
while(cin>>n)
{
b=1;
while(n--)
{
cin>>a;
if(a%2==1)b*=a;
}
cout<<b<<endl;
}
return 0;
}
2007:平方和立方和
#include<iostream>
using namespace std;
int main()
{
int m,n,t,x,y;
while(cin>>m>>n)
{
x=0,y=0;
if(m>n){int t=m;m=n;n=t;}
for(int i=m;i<=n;i++)
{
if(i%2==0)
x+=i*i;
else
y+=(i*i*i);
}
cout<<x<<" "<<y<<endl;
}
return 0;
}
2008:数值统计
#include<iostream>
using namespace std;
int main()
{
int t;
while(cin>>t)
{
if(t==0)
continue;
else
{
int a=0,b=0,c=0;
double n;
while(t--)
{
cin>>n;
if(n<0)
a++;
else if(n==0)
b++;
else
c++;
}
cout<<a<<" "<<b<<" "<<c<<endl;
}
}
return 0;
}
2009:求数列的和
#include<iostream>
#include<cstdio>
#include<iomanip>
using namespace std;
int main()
{
int i;
double n,m,sum;
while(cin>>n>>m)
{
sum=n*1.00;
for(i=1;i<m;i++)
{
n=sqrt(n);
sum+=n;
}
cout<<fixed<<setprecision(2)<<sum<<endl;
}
return 0;
}
2010:水仙花数
#include<iostream>
using namespace std;
int main()
{
int m,n,bai,shi,ge;
while(cin>>m>>n)
{
int s=0;
for(;m<=n;m++)
{
bai=m/100;
shi=m/10%10;
ge=m%10;
if(ge*ge*ge+shi*shi*shi+bai*bai*bai==m)
{
if(s==0)
cout<<m;
else
cout<<" "<<m;
s++;
}
}
if(s==0)
cout<<"no"<<endl;
else
cout<<"\n";
}
return 0;
}