这道题略坑啊啊啊啊。。。。
#include<iostream>
#include<math.h>#include<string.h>
using namespace std;
#define length_max 300
int temp[7][length_max];
int jin[length_max];
void cheng (int *a,int *b,int n){
jin[length_max-1]=0;
for(int i=n-1;i>=0;i--){
for(int j=length_max-1;j>=0;j--){
int chengji=b[i]*a[j]; //cout<<"乘积:"<<chengji;
int jieguo=chengji+jin[j];//cout<<"结果:"<<jieguo;
temp[i][j]=jieguo%10; //cout<<"该位:"<<temp[i][j];
jin[j-1]=jieguo/10; //cout<<"进位:"<<jin[j-1]<<endl;
}
for(int j=0;j<length_max-i+n-1;j++){
temp[i][j]=temp[i][j+n-1-i];
}
for(int j=length_max-1;j>length_max+i-n;j--){
temp[i][j]=0;
}
/*
cout<<"num:";
bool bo1=false;
for(int z=0;z<length_max;z++){
if(temp[i][z]!=0){
bo1=true;
}
if(bo1){
cout<<temp[i][z];
}
}
cout<<endl;*/
}
int jinwei=0;
for(int i=length_max-1;i>0;i--){
a[i]=0;
int tmp=jinwei;
//cout<<"上一位进位:"<<tmp;
for(int j=0;j<n;j++){
tmp+=temp[j][i];
}
//cout<<"结果:"<<tmp;
a[i]=tmp%10;//cout<<"该位:"<<a[i];
jinwei=tmp/10;//cout<<"进位"<<jinwei<<endl;
}
}
int main()
{
char str [7];
char *s=str;
int n;
int ans[length_max];
while(cin>>s>>n)
{
/*
for(int i=0;i<7;i++)
{
cout<<s[i]<<endl;
}*/
ans[length_max-1]=1;
for(int i=0;i<length_max-1;i++){
ans[i]=0;
}
int c=0;bool t=false;bool tm=false ;int j=0;
int key[6];
for(int i=0;i<6;i++){
if(s[i]=='.'){
t=true;
}else{
if(s[i]!='0')
{
tm=true;
}
if(tm){
key[j++]=s[i]-'0';
}
if(t){
c++;
}
}
}
int length=j;
for(int i=length-1;i>0;i--){
if(key[i]==0)
{
length--;c--;
if(c>0)
continue;
else
break;
}
else{
break;
}
}
int num=c*n;
/*
cout<<" 整数:";
for(int i=0;i<length;i++)
{
cout<<key[i]<<" ";
}
cout<<"移位:"<<num<<" length:"<<length<<endl;*/
for(int i=0;i<n;i++){
cheng(ans,key,length);
}
bool bo1=false;
for(int z=0;z<length_max;z++){
if(ans[z]!=0){
bo1=true;
}
if(bo1){
cout<<ans[z];
}
if(z==length_max-num-1)
{
if(num!=0){
cout<<'.';
}
bo1=true;
}
}
cout<<endl;
}
return 0;
}