Hangdian oj2000-2009 C ++の実装(南昌工科大学のACMトレーニングチーム)

私は冬の休暇キャンプ中にC ++を学び始め、C ++を使用したHangdianojで2000〜2009年の問題に気づきました。

Hangdian 2000ASCIIコードソートC ++実装。杭州電気2000

#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桁が必要であることに注意してください。

おすすめ

転載: blog.csdn.net/weixin_51765822/article/details/112790182