本文主要是介绍岛屿的缘分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Description
人和人的相识是一种缘分,其实人有幸到某地也是一种缘分。某风景优美的K小岛的缘分和其他景点的缘分来得不一般,K岛上有一个石碑刻上了两个很大很大的整数x和y,和一个正整数K,后面写道:“谁能准确的写出x和y的乘积中最右边的k位数(如果乘积不足K位则在左边用“0”补足K位),他就是和K小岛有缘分的人”,李先生到了K小岛,他马上叫他的秘书算一算,写出x和y的乘积中最右边的k位数,看看李先生和他的秘书是否和K小岛有缘分。现在也请你完成这个工作(注意: 如果乘积不足K位则在左边用“0”补足K位)。
Input
从文件b.in读入数据,文件中共有三行,第一行是一个位数不大于120的正整数x,第二行是一个位数不大于120的正整数y,第三行是一个正整数K(1=< K <=250)。
Output
结果输出到文件b.out中,只有一行,就是x和y的乘积中最右边的k位数。
Sample Input
输入输出样例1:
b.in
30
60
3
输入输出样例2:
b.in
12
13
5
Sample Output
输入输出样例1:
b.out
800
输入输出样例2:
b.out
00156
.
.
.
.
.
分析
高精乘
.
.
.
.
.
程序:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;int a[200],b[200],c[1000],k,l1,l2;
string s,t,r;int main()
{freopen("b.in","r",stdin);freopen("b.out","w",stdout);cin>>s>>t;scanf("%d",&k);l1=s.size();for (int i=l1;i>=1;i--)a[l1-i+1]=s[i-1]-'0'; l2=t.size();for (int i=l2;i>=1;i--)b[l2-i+1]=t[i-1]-'0';for (int i=1;i<=l1;i++)for (int j=1;j<=l2;j++){c[i+j-1]=a[i]*b[j]+c[i+j-1];c[i+j]+=c[i+j-1]/10;c[i+j-1]%=10;}int i=l1+l2;while (c[i]>10) {c[i+1]=c[i]/10;c[i]%=10;i++;}for (int i=k;i>=1;i--)printf("%d",c[i]);fclose(stdin);fclose(stdout);return 0;
}
这篇关于岛屿的缘分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!