⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1001.cpp

📁 pku acm 1001 代码
💻 CPP
字号:
#include <stdio.h>
#include <string.h>

int n,dotaddr,dotnum;
char r[7];
char res[160],tres[160];

void multiple(char *num1,char *num2,char *res){
     char t2[160];
     int len1,len2;
     int tres,add,co;
     int offset;
     int lt;
    
     offset = 0;
     for(len2=0;len2<strlen(num2);len2++){
         add = 0;
         co = 0;
         memset(t2,'\0',sizeof(t2));
         for(len1=0;len1<strlen(num1);len1++){
             tres = (num2[len2]-'0')*(num1[len1]-'0')+add;
             add = tres/10;
             tres = tres%10;
             t2[co++] = tres+'0';
         }
         if(add != 0)
             t2[co] = add+'0';
         add = 0;
         for(lt=0;lt<strlen(t2);lt++){
             if(res[lt+offset] != '\0'){
                 tres = res[lt+offset]-'0' + t2[lt]-'0'+add;
                 add = tres/10;
                 res[lt+offset] = tres%10+'0';
             }
             else{
                 tres = t2[lt]-'0'+add;
                 add = tres/10;
                 res[lt+offset] = tres%10+'0';
             }
         }
         if(add != 0){
             res[lt+offset] = add+'0';
         }
         offset++;
     }
     //printf("%s\n",res);
}

void output(char *s){
     int lt;
     int tzp;
     int intnum;
    
     for(lt=0;lt<strlen(s);lt++)
         if(s[lt] != '0')
             break;
     tzp = lt;
     if(dotnum>0)
         dotnum = dotnum*n;
     else
         dotnum = 0;
     intnum = strlen(s)-dotnum;
     if(dotnum==0){
         for(lt=0;lt<=intnum;lt++)
             printf("%c",s[strlen(s)-1-lt]);
         printf("\n");
     }
     else{
         for(lt=strlen(s)-1;lt>=strlen(s)-intnum;lt--)
             if(s[lt]>'0')
                 break;
         for(lt=lt;lt>=strlen(s)-intnum;lt--)
             printf("%c",s[lt]);
         printf(".");
         for(lt=lt;lt>=tzp;lt--)
             printf("%c",s[lt]);
         printf("\n");
     }
}

int main(int argv,char args[]){
     char tr[7];
     int lt;
     int co;
    
     while(scanf("%s %d",tr,&n)==2){
         co = 0;
         dotaddr = 6;
         memset(r,'\0',sizeof(r));
         for(lt=0;lt<strlen(tr);lt++){
             if(tr[lt] != '.')
                 r[co++] = tr[lt];
             else
                 dotaddr = lt;
         }
         for(lt=strlen(tr)-1;lt>=0;lt--){
             if(tr[lt]!='0')
                 break;
         }
         dotnum = lt-dotaddr;
         for(lt=strlen(r)-1;lt>=dotaddr;lt--)
             if(r[lt] != '0')
                 break;
         for(co=strlen(r)-1;co>lt;co--)
             r[co]='\0';
         strcpy(tr,r);
         co = 0;
         for(lt=strlen(tr)-1;lt>=0;lt--){
             r[co++] = tr[lt];
         }
         if(n==0)
             printf("1\n");
         else{
             strcpy(tres,r);
             for(lt=0;lt<n-1;lt++){
                 memset(res,'\0',sizeof(res));
                 multiple(tres,r,res);
                 strcpy(tres,res);
             }
         }
         output(tres);
     }     
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -