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 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀