求和,求阴影部分面积,计算邮资,阶乘之和题目答案解析

求和 求面积 计算邮资 阶乘之和

一、 求和

问题描述:
编程求 A+B 的和,并输出,A 和 B 的位数不超过 200。
【输入】
两行,分别为两个非负整数
【输出】
一行,为两数之和。
【输入样例】
12
3
【输出样例】
15

#include
using namespace std;
long long q,w,e,r,t,y,u,i,o,p,d,f,g,j,k,l,z,x,v,n,m;
long long a[1000],b[1000],c[1000];
string s,h;
int main()
{
	freopen("ta.in","r",stdin);
	freopen("ta.out","w",stdout);
	cin>>s>>h;
	for(i=0;i<=s.size()-1;i++)
	{
		a[s.size()-i]=s[i]-48;
	}
	m=i;
	for(i=0;i<=h.size()-1;i++)
	{
		b[h.size()-i]=h[i]-48;
	}
	n=i;
	m=max(m,n);
	for(i=1;i<=m;i++)
	{
		c[i]+=a[i];
		c[i]+=b[i];
		if(c[i]>=10)
		{
			c[i]-=10;
			c[i+1]++;
		}
	}
	if(c[m+1]==1)
	{
		cout<<1;
	}
	for(i=m;i>=1;i--)
	{
		cout<<c[i];
	}
	return 0;
}

二、 求阴影部分面积

问题描述:
已知正方形的边长为 a,求图中阴影部分的面积。(圆的面积 s=pirr,这里假设 pi 取 3,
r 为圆的半径)
【输入】
一行,就是边长 a
【输出】
一行,阴影部分面积
【输入样例】
4
【输出样例】
3

#include
using namespace std;
long double q,w,e,r,t,y,u,i,o,p,d,f,g,j,k,l,z,x,v,n,m;
long long a[1000],b[1000],c[1000];
long double s,h;
int main()
{
	freopen("tb.in","r",stdin);
	freopen("tb.out","w",stdout);
	cin>>x;w=x*x/16*3;
	if(int(x*x)%16==0)
	{
		long long ww=w;
		cout<<ww;
		return 0;
	}
	long long ww=int(w);cout<<ww;
	cout<<w-ww;
	return 0;
}

三、计算邮资

问题描述:
根据邮件的重量和用户是否选择加急计算邮费。计算规则:重量在 1000 克以内(包括
1000 克), 基本费 8 元。超过 1000 克的部分,每 500 克加收超重费 4 元,不足 500 克部分
按 500 克计算;如果用户选择加急,多收 5 元。
【输入】
一行,包含一个正整数和一个字符,以一个空格分开,分别表示重量(单位为克)和是
否加急。如果字符是 y,说明选择加急;如果字符是 n,说明不加急。0<重量值<109
【输出】
一行,包含一个整数,表示邮费。
【输入样例】
1000 n
【输出样例】
8

#include
using namespace std;
long long q,w,e,r,t,y,u,i,o,p,d,f,g,j,k,l,z,x,v,n,m;
long long a[1000],b[1000],c[1000];
char s,h;
int main()
{
	freopen("tc.in","r",stdin);
	freopen("tc.out","w",stdout);
	cin>>x>>s;x=(x+499)/500;
	if(s=='y') m+=5;
	m+=4*x;cout<<m;
	return 0;
}

四、阶乘之和

问题描述:
【题目描述】
输入 n,计算 S=1!+2!+3!+…+n!的末 6 位(不含前导 0)。n≤106,n!表示前 n 个正整
数之积。
【输入】
一行,整数 n。
【输出】
一行,阶乘和的末 6 位
【输入样例】
10
【输出样例】
37913
【提示:数据范围】
对于所有输入数据,1≤n≤999999

#include
using namespace std;
long long q,w,e,r,t,y,u,i,o,p,d,f,g,j,k,l,z,x,v,n,m;
long long a[1000],b[1000],c[1000];
long long s,h;
int main()
{
	freopen("td.in","r",stdin);
	freopen("td.out","w",stdout);
	cin>>m;
	if(m>=100)
	{cout<<"940313";return 0;}	
	s=0;k=1;
	for(i=1;i<=m;i++)
	{
		k=1;
		for(j=1;j<=i;j++)
		{k*=j;k%=1000000;}
		s+=k;s%=1000000;
	}
	cout<<s;
	return 0;
}

欢迎纠错

你可能感兴趣的:(C++,比赛,CSP,算法,c++,数据结构,开发语言,运维,数据库)