计算N(N可等于1000)的阶乘,大数相加,查找最大元素
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算n(n可为1000)的阶乘
时间限制:
5000ms
内存限制:
40000kB
描述
对于给出的N,计算N(0<=n<=1000)的阶乘。
输入
有多组测试数据,每组占一行,为整数N,输入到文件结束。
输出
对于每组测试数据,输出一行结果。
样例输入
1
2
3
样例输出
1
2
6
#include
int a[20000];
int main()
{
int n, i, j, flag, length, t;
while(scanf("%d", &n)!=EOF)
{
a[0] = 1;
if(n==0)
{
printf("1\n");
continue;
}
length = 1;
for(i=1; i<=n; i++)
{
flag = 0;
for(j=0; j
t = i * a[j];
a[j] = ( t + flag) % 10;
flag = ( t + flag) / 10;
}
while(flag!=0)
{
a[j] = flag % 10;
j++; length++;
flag = flag / 10;
}
}
for(i=length-1; i>=0; i--)
{
printf("%d", a[i]);
}
printf("\n");
}
}
大数相加
时间限制:
1000ms
内存限制:
200kB
描述
输入两个大数(长度超过30位),将其相加后的结果打印出来。
输入
两个大数
输出
相加后的和
样例输入
111111111111111111111111111111 222222222222222222222222222222
样例输出
333333333333333333333333333333
#include"stdio.h"
#include"string.h"
char a[1001],b[1001],s[1002]={0};
main()
{
int i,j,la,lb,k,l;
for(i=1;;i++)
{
scanf("%s%s",a,b);
la=strlen(a);
lb=strlen(b);
for(j=la-1,k=0;j>=0;j--)
s[k++]=a[j]-'0';
for(j=lb-1,k=0;j>=0;j--)
s[k++]+=b[j]-'0';
l=la>lb?la:lb;
for(j=0;j
{
s[j]-=10;
s[j+1]++;
}
if(s[j]) l++;
for(j=l-1;j>=1;j--)
{
printf("%d",s[j]);
s[j]=0;
}
printf("%d\n",s[0]);
}
}
查找最大元素
时间限制:
1000ms
内存限制:
32768kB
描述
对于输入的每个字符串,查找其中的最大字母,在该字母后面插入字符串“(max)”。
输入
输入数据包括多个测试实例,每个实例由一行长度不超过100的字符串组成,字符串仅由大小写字母构成。
输出
对于每个测试实例输出一行字符串,输出的结果是插入字符串“(max)”后的结果,如果存在多个最大的字母,就在每一个最大字母后面都插入"(max)"。
样例输入
abcdefgfedcba xxxxx
样例输出
abcdefg(max)fedcba x(max)x(max)x(max)x(max)x(max)
#include
using namespace std;
int main()
{
char a[10000],max;
int i,len;
while(cin>>a)
{
len=strlen(a);
max=a[0];
for(i=1;i
max=a[i];
for(i=0;i
cout<if(a[i]==max) cout<<"(max)";
}
cout<
}