julicliy 2017-10-12 14:32 采纳率: 0%
浏览 1418

POJ 1001 总是提示答案错误

#include
#include
#include
#include
using namespace std;
const int MAX = 500;
char a[MAX];
char b[MAX];
char temp[MAX];
char result[MAX];
char str[8]="98.999";
int n = 10,point;
bool pointEmpty(){
int i;
for(i=0; i<strlen(str); i++)
if(str[i] == '.')
return true;
return false;
}
void init(){
int i,j;
memset(a,0,MAX*sizeof(char));
memset(b,0,MAX*sizeof(char));
memset(result,0,MAX*sizeof(char));
memset(temp,0,MAX*sizeof(char));
if(pointEmpty())
for(i=strlen(str)-1; str[i]=='0'; i--)
str[i] = '\0';

for(i=strlen(str)-1,j=0; i>=0; i--){        
    if(str[i]!='.'){            
        b[j] = str[i];
        a[j++] = str[i];
    }else{
        point = strlen(str) - i - 1;        
    }
}
point = point*n;

}
void fun(){
int i,j,h,k,v,z,x,y;

if(n==1) {
strcpy(result, a);
return ;
}
if(n==0){
strcpy(result, "1");
return ;
}

while(--n){

    for(i=0; i<strlen(a); i++){
        z=0; h=0;
        for(j=0; j<strlen(b); j++){
            z = (a[i]-48) * (b[j]-48) + z;
            v = z%10;
            z = z/10;
            temp[h++] = v+48;
        }               
        if(z!=0) temp[h++] = z+48;
        temp[h] = '\0';         
        h=0;z=0;
        for(k=i; k<j || h<strlen(temp); h++,k++){
            if(i==0){
                result[k] = temp[h];
            }else{
                if(result[k] == 0) x=0;
                else x = result[k]-48;
                if(temp[h] == 0) y=0;
                else y = temp[h]-48;
                z = x + y + z;              
                v = z%10;
                z = z/10;
                result[k] = v+48;               
            }
        }
        if(z!=0) result[k++] = z+48;
        result[k] = '\0';       
    }       
    strcpy(b, result);      
}   

}

void solve(){

int count,i,j,k;
char ch;
init();
fun();
strcpy(temp, result);

for(i=0,j=0; i<strlen(result); i++){
    if(point == i && point!=0){
        result[j++] = '.';          
    }
    result[j++] = temp[i];      
}   

k = strlen(result); 
for(i=k-1; i>=k/2; i--){
    ch = result[i];
    result[i] = result[k-i-1];
    result[k-i-1] = ch;
}
printf("%s\n",result);  

}
int main()
{
while(cin>>str>>n){
solve();
}
return 0;
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-10-13 01:22
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?