私は冬の休暇キャンプ中にC ++を学び始め、C ++を使用したHangdianojで2000〜2009年の問題に気づきました。
Hangdian 2000ASCIIコードソートC ++実装。
#include<iostream>
using namespace std;
int main()
{
char str[3],temp;
while(cin>>str)
{
if(str[0]>str[1])
{
temp=str[0],str[0]=str[1],str[1]=temp;
}
if(str[0]>str[2])
{
temp=str[0],str[0]=str[2],str[2]=temp;
}
if(str[1]>str[2])
{
temp=str[1],str[1]=str[2],str[2]=temp;
}
cout<<str[0]<<" "<<str[1]<<" "<<str[2]<<endl;
}
return 0;
}
文字が定義されており、出力時にはスペースが必要であることに注意してください。
Hangdian oj2001は、C ++で2点間の距離を計算します。
#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;
int main()
{
double x1,x2,y1,y2,x;
while(cin>>x1>>y1>>x2>>y2)
{
x=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
cout<<fixed<<setprecision(2)<<x<<endl;
}
return 0;
}
結果は小数点以下2桁になります。現時点では、以下を使用する必要があります。
#include<iomanip> //setiosflags(ios::fixed),头文件为:include<iomanip>
cout<<fixed<<setprecision(2)<<x<<endl;//setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。
Hangdian oj2002は、ボールC ++実装のボリュームを計算します。
#include<iostream>
#include<iomanip>//setiosflags(ios::fixed),头文件为:include<iomanip>
#define pi 3.1415927
using namespace std;
int main()
{
double v,r;
while(cin>>r)
{
v=pi*r*r*r*4/3;
cout<<setiosflags(ios::fixed)<<setprecision(3)<<v<<endl;//setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。
}
return 0;
}
結果は小数点以下3桁を保持することに注意してください。
絶対値のHangdianoj2003 C ++実装。
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double n;
while(cin>>n)
{
if(n>0)
{
cout<<fixed<<setprecision(2)<<n<<endl;
}
else
cout<<fixed<<setprecision(2)<<-n<<endl;
}
return 0;
}
ハングディアンoj2004スコア変換C ++の実装。
#include<iostream>
using namespace std;
int main()
{
int a;
while(cin>>a)
{
if(a>=90&&a<=100)
{
cout<<'A'<<endl;
}
else if(a>=80&&a<=89)
{
cout<<'B'<<endl;
}
else if(a>=70&&a<=79)
{
cout<<'C'<<endl;
}
else if(a>=60&&a<=69)
{
cout<<'D'<<endl;
}
else if(a>=0&&a<=59)
{
cout<<'E'<<endl;
}
else cout<<"Score is error!"<<endl;
}
return 0;
}
Hangdian oj2005 C ++実装の最初の数日
#include<iostream>
using namespace std;
int main()
{
int y,m,d,i,s;
while(cin>>y)
{
s=0;
int t1[12]={
31,28,31,30,31,30,31,31,30,31,30,31};
int t2[12]={
31,29,31,30,31,30,31,31,30,31,30,31};
cin.ignore();
cin>>m;
cin.ignore();
cin>>d;
if((y%400==0)||((y%100!=0)&&(y%4==0)))
{
for(i=0;i<m-1;i++)
{
s=s+t2[i];
}
s=s+d;
}
else
{
for(i=0;i<m-1;i++)
{
s=s+t1[i];
}
s=s+d;
}
cout<<s<<endl;
}
return 0;
}
注:
うるう年かどうかを判断するために、うるう年の2月は29日です。
cin.ignore();
cin.ignore();の機能は、入力の1985/1/20のスラッシュを削除することです。
Hang Dian 2006 C ++での奇数の積の実現
#include<iostream>
using namespace std;
int main()
{
int n,m,sum;
while(cin>>n)
{
sum=1;
for(int i=0;i<n;i++)
{
cin>>m;
if(m%2!=0)
{
sum=sum*m;
}
}
cout<<sum<<endl;
}
return 0;
}
ハングディアンoj2007の二乗和と三乗和
#include<iostream>
using namespace std;
int main()
{
int n,m,x,y,i;
while(cin>>m>>n)
{
x=0,y=0;
if(m>n)//比较n m的大小。
{
i=m,m=n,n=i;
}
for(;m<=n;m++)
{
if(m%2==0)
{
x=x+m*m;
}
else y=y+m*m*m;
}
cout<<x<<" "<<y<<endl;
}
return 0;
}
mとnのサイズを比較するように注意してください。
杭州電気のoj2008数値統計のC ++実現
#include<iostream>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
if(n==0)
{
break;
}
double a=0,b=0,c=0,i=0,x;
while(cin>>x)
{
i++;
if(x<0)
{
a++;
}
if(x==0)
{
b++;
}
if(x>0)
{
c++;
}
if(i==n)
{
break;
}
}
cout<<a<<" "<<b<<" "<<c<<endl;
}
return 0;
}
出力のスペースに注意してください。
Hang Dian oj2009 C ++のシーケンスの合計を求めます
#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;
int main()
{
int n,m;
while(cin>>n>>m)
{
double b,sum=0;
b=n,sum=n;
for(int i=1;i<m;i++)
{
b=sqrt(b);
sum=sum+b;
}
cout<<fixed<<setprecision(2)<<sum<<endl;
}
return 0;
}
結果には小数点以下2桁が必要であることに注意してください。