poj 1001(分類討論)
阿新 • • 發佈:2021-11-17
#include<iostream> #include<cstring> using namespace std; int data[150],len; void multiply(int tmp){ int i,j; for(i=0;i<len;i++){ data[i] *= tmp; } for(i=0;i<len;i++){ if(data[i]>=10){ j = data[i]/10; data[i+1] += j; data[i]%= 10; } } while(data[i]>=10){ data[i+1] = data[i]/10; data[i] %= 10; i++; } len = i+1; } void expo(int tmp,int n){ int i; for(i=0;i<n;i++){ multiply(tmp); } } int main(){ int i,j,r,icon,tmp; char a[10]; while(scanf("%s%d",a,&r)==2){ tmp = 0; for(i=0;i<strlen(a);i++){ if(a[i]=='.'){ icon = (5-i)*r; } else{ tmp += a[i]-'0'; tmp *= 10; } } tmp /= 10; memset(data,0,sizeof(data)); data[0] = 1; len = 1; expo(tmp,r); j = 0; for(i=0;i<icon;i++){ if(data[i]==0){ j++; } else{ break; } } if(!(len-1==icon&&data[len-1]==0)){ for(i=len-1;i>icon-1;i--){ printf("%d",data[i]); } } if(j!=icon){ printf("."); } for(i=icon-1;i>j-1;i--){ printf("%d",data[i]); } printf("\n"); } return 0; }