| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
你写太长了,很短就可以,不要想难了,这个是超级简单题In Reply To:这题怎么没有要求呀? Posted by:knuthocean at 2005-03-04 15:01:15 > 我写的程序精度很高,但不知道错在哪儿呀,郁闷!!!!!
> #include <stdio.h>
> #include <iostream.h>
> #include <math.h>
>
> int multiply(int* a,int m,int* b,int n,int* c)
> {
> int i,j,k,r,t;
> for(i=0;i<m;i++) c[i]=0;
> for(j=0;j<n;j++){
> r=0;
> for(k=0;k<m;k++){
> t=a[k]*b[j]+c[k+j]+r;
> c[k+j]=t%10;
> r=t/10;
> }
> c[j+m]=r;
> }
> int len=m+n;
> while((len>1)&&(c[len-1]==0)) len--;
> return len;
> }
> int sum(int a[],int b[],int lena,int lenb)
> {
> int len=(lena>=lenb)?lena:lenb;
> int i;
> a[len]=0;
> if(len==lena){
>
> for(i=lenb;i<lena;i++)
> b[i]=0;
> }
> else
> for(i=lena;i<lenb;i++)
> a[i]=0;
> for(i=0;i<len;i++){
> a[i]=a[i]+b[i];
> if(a[i]>=10){ a[i]-=10;a[i+1]++;}
> }
> if(a[len]>0) len++;
> return len;
> }
>
> void main()
> {
> int n;
> int i;
> int k;
> int x[400],y[400],z[800];
> int z1[800],z2[800];
> int result[820];
> int pi[15]={3,1,4,1,5,9,2,6,5,3,5,8,9,7,9};
>
> for(i=0;i<7;i++){
> int swap=pi[i];
> pi[i]=pi[14-i];
> pi[14-i]=swap;
> }
>
> cin>>n;
> long *record=new long[n+1];
> for(k=0;k<n;k++){
>
> char c;
>
> int xpoints=0,ypoints=0;
> int lenx=0,leny=0;
>
>
> i=0;
>
> int flag=0;
> while(1){
> scanf("%c",&c);
> if(c==' ') break;
> if(c!='.'){
> if(flag) xpoints++;
> x[i]=c-'0';
> i++;
> lenx++;
> }
> else
> flag=1;
>
> }
> if((x[0]==((int)'-' - (int)'0'))||((x[0]==(int)'+' - (int)'0'))){
> lenx--;
> for(i=0;i<lenx;i++)
> x[i]=x[i+1];
> }
> flag=0;i=0;
> while(1){
> scanf("%c",&c);
>
> if(c=='\n') break;
>
> if(c!='.'){
> if(flag) ypoints++;
> y[i]=c-'0';
> i++;
> leny++;
> }
> else flag=1;
> }
>
>
>
> i=0;
> if(y[i]==((int)' ' - (int)'0')){
> while((y[i]==((int)' ' - (int)'0'))&&(i<(leny-1))) i++;
> leny-=i;
> for(int index=0;index<leny;index++)
> y[index]=y[index+i];
> }
> i=0;
> if(y[i]==(int)'+' - (int)'0'){
> leny--;
> for(i=0;i<leny;i++)
> y[i]=y[i+1];
> }
>
>
> while((lenx>1)&&(x[lenx-1]==0)&&(xpoints>0)) {lenx--;xpoints--;}
> while((leny>1)&&(y[leny-1]==0)&&(ypoints>0)) {leny--;ypoints--;}
>
> int temp;
> for(i=0;i<lenx/2;i++){
> temp=x[i];
> x[i]=x[lenx-1-i];
> x[lenx-1-i]=temp;
> }
> for(i=0;i<leny/2;i++){
> temp=y[i];
> y[i]=y[leny-1-i];
> y[leny-1-i]=temp;
> }
>
>
>
>
>
> int lenz1=multiply(x,lenx,x,lenx,z1);
>
> int lenz2=multiply(y,leny,y,leny,z2);
>
>
> xpoints+=xpoints;ypoints+=ypoints;
>
> int num;
> if(xpoints>ypoints){
> num=xpoints-ypoints;
> for(i=lenz2-1;i>=0;i--)
> z2[i+num]=z2[i];
> for(i=0;i<num;i++)
> z2[i]=0;
> lenz2+=num;
>
>
> }
> else if(xpoints<ypoints){
> num=ypoints-xpoints;
> for(i=lenz1-1;i>=0;i--)
> z1[i+num]=z1[i];
> for(i=0;i<num;i++)
> z1[i]=0;
> lenz1+=num;
>
> }
>
>
> int lenz=sum(z1,z2,lenz1,lenz2);
> for(i=0;i<lenz;i++)
> z[i]=z1[i];
>
>
>
> int length=multiply(z,lenz,pi,15,result);
> int points=14;
> points+=(xpoints>=ypoints)?xpoints:ypoints;
>
>
> long l=0;
> for(i=length-1;i>=points+2;i--)
> l=l*10+(long)result[i];
>
> record[k]=l+1;
> }
>
> for(k=0;k<n;k++)
> cout<<"Property "<<k+1<<": This property will begin eroding in year "<<record[k]<<"."<<endl;
> cout<<"END OF OUTPUT."<<endl;
> }
>
>
>
>
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator