在科学记数法中,一个数可以被写成一个实数a与一个10的n次幂的积:a x 10n
给定一个数科学记数法表示中的a和n的值,求该数原本的值。
输入
输入a, n代表科学记数法表示中的实数部分和幂次大小,1 <= a < 10 ,0 <= n <=1000。
输出
输出其表达的值。
样例输入 Copy
1.22 2
样例输出 Copy
122
提示
表达的数字可以达到1000位。
#include<stdio.h>
#include<math.h>
int main()
{
double a;
double z;
int n;
scanf("%lf%d",&a,&n);
z=a*pow(10,n);
printf("%.0lf",z);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[1112];
cin>>a;
int n; //1.22 2
cin>>n;
int len1=strlen(a);
int len;
if(len1>1)len=len1-2;
else {
cout<<a;
for(int i=0;i<n;i++){
cout<<0;
}
cout<<endl;
return 0;
}
if(n==0){
cout<<a<<endl;
return 0;
}
if(n>=len){
cout<<a[0];
for(int i=2;i<len1;i++){
cout<<a[i];
}
for(int i=0;i<n-len;i++){
cout<<0;
}
cout<<endl;
return 0;
}
if(n<len){
cout<<a[0];
int j=2;
while(n--){
cout<<a[j++];
}
cout<<a[1];
for(;j<len1;j++){
cout<<a[j];
}
cout<<endl;
return 0;
}
}
我没试过,但这个大概能通过?10的1000次方太大了超过double的范围了,也超过的unsigned long long 的范围了,只能用字符形式输出