POJ经典题答案.doc_第1页
POJ经典题答案.doc_第2页
POJ经典题答案.doc_第3页
POJ经典题答案.doc_第4页
POJ经典题答案.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2231# include # include int cmp(const void *a, const void *b) return *(_int64 *)a - *(_int64 *)b;int main() _int64 i, n; _int64 data10001; _int64 sum, total, tmp; scanf(%I64d,&n); sum = total = tmp = 0; for(i = 0; i n; i+) scanf(%I64d,&datai); sum += datai; qsort(data,n,sizeof(data0),cmp); for(i = 0; i n; i+) tmp += datai; total += sum-tmp-(n-i-1)*datai+i*datai-(tmp-datai); printf(%I64dn,total); return 1;1922#include using namespace std; struct double v,t; rider10010; int n; void input() int i; double temp,mins=100000000; for(i=0;i rideri.v rideri.t; temp=4.5/(rideri.v/3600)+rideri.t; if(rideri.t=0) if(tempmins) mins=temp; if(int(mins*10)=(int(mins)*10) mins=int(mins); else mins=int(mins)+1; cout mins endl; int main() while(1) scanf(%d,&n); if(n=0)break; input(); return 0; /#include using namespace std; struct double v,t; rider10010; int n; void input() int i; double temp,mins=100000000; for(i=0;i rideri.v rideri.t; temp=4.5/(rideri.v/3600)+rideri.t; if(rideri.t=0) if(tempmins) mins=temp; if(int(mins*10)=(int(mins)*10) mins=int(mins); else mins=int(mins)+1; cout mins endl; int main() while(1) scanf(%d,&n); if(n=0)break; input(); return 0; 1014#include using namespace std; int ok ; int d6 ; void find ( int now , int x ) if ( x 0 ) return ; int s , i ,t = now / (x+1) ; s = t dx ? dx : t ; if ( now - s * (x+1) != 0 ) for ( i = s ; i = 0 ; i - ) find ( now - i * (x+1) , x-1 ) ; if ( ok ) return ; else ok = 1 ; return ; return ; int main () int i ,sum ,t = 0 ; while ( 1 ) for ( i = 0,sum = 0 ; i 6 ;i + ) cindi; di %= 60 ; sum += di * ( i+1 ) ; if ( sum = 0 ) break ; ok = 0 ; if ( sum % 2 ) coutCollection #+t:endl; coutCant be divided.endl; coutendl; else find ( sum/2 , 5 ) ; if ( ok ) coutCollection #+t:endl; coutCan be divided.endl; coutendl; else coutCollection #+t:endl; coutCant be divided.endl; coutendl; return 0 ; 1005/1005 #include #include using namespace std; int main() int n,count,num=1; float x=0.0,y=0.0,temp=0.0,pi=3.1415926; cinn; while(n-) cinxy; temp=pi*(x*x+y*y)/2; count=(int)(temp/50+1); coutProperty num: This property will begin eroding in year count.endl; num+; coutEND OF OUTPUT.peid; if(p=-1&e=-1&i=-1&d=-1) break; else result = (21252 + 5544 * p + 14421 * e + 1288 * i - d) % 21252; if(!result) result=21252; coutCase count: the next triple peak occurs in result days.endl; count+; return 0; /*Problem: Poj 1019 思路: 归纳分析出m位数所有排出来的长度,有下面的a数组-0索引不用。b数组存储的是该m位数 最后一个(例如99,99189,9992889)排出来的长度。下面就将序号N对应的数字找出来 */ #include using namespace std; int main() int a5=0,45,9045,1395495,189414495; int b5=0,9,189,2889,38889; int c5=0,10,100,1000,10000; int d5=1,10,100,1000,10000; unsigned long i,j,k,n,t; cint;while(t-) cinn; for(i=1;i5;i+) if(n=ai)break; /判断n的位数,得到的i为n的位数 n-=ai-1; for(k=0,j=1;kn;j+) k=bi-1*j+i*j*(j+1)/2; /得到该i-1位的数中排列第一个超过序号n的第j个数 /(例如:2位数,第j个数是11+j -j; /j为第j个小组 n=n-bi-1*(j-1)-i*j*(j-1)/2; /在该数中寻找最终的位置 for(i=1;i5;i+) if(n=bi)break; /判断n的位数 if(i=1)coutnendl; else /求得在该数的一排中 最后更新了的序号n对应的数字 n-=bi-1; k=(n-1)/i+ci-1; /k为具体数的值 coutk/di-(n-1)%i-1%10endl; /输出具体值的某一位 return 0; /*Problem: Poj 1019 思路: 归纳分析出m位数所有排出来的长度,有下面的a数组-0索引不用。b数组存储的是该m位数 最后一个(例如99,99189,9992889)排出来的长度。下面就将序号N对应的数字找出来 */ #include using namespace std; int main() int a5=0,45,9045,1395495,189414495; int b5=0,9,189,2889,38889; int c5=0,10,100,1000,10000; int d5=1,10,100,1000,10000; unsigned long i,j,k,n,t; cint;while(t-) cinn; for(i=1;i5;i+) if(n=ai)break; /判断n的位数,得到的i为n的位数 n-=ai-1; for(k=0,j=1;kn;j+) k=bi-1*j+i*j*(j+1)/2; /得到该i-1位的数中排列第一个超过序号n的第j个数 /(例如:2位数,第j个数是11+j -j; /j为第j个小组 n=n-bi-1*(j-1)-i*j*(j-1)/2; /在该数中寻找最终的位置 for(i=1;i5;i+) if(n=bi)break; /判断n的位数 if(i=1)coutnendl; else /求得在该数的一排中 最后更新了的序号n对应的数字 n-=bi-1; k=(n-1)/i+ci-1; /k为具体数的值 coutk/di-(n-1)%i-1%10endl; /输出具体值的某一位 return 0; 2190#include #include using namespace std; int main() char in11; memset(in,0,sizeof(in); gets(in); long temp=0; long m=10,t; int k=0; for(int i=0;i(strlen(in)-1);i+) if(ini=?) k=i;m-; else temp+=(ini-0)*m; m-; if(in9=X) temp+=10; else if(in9=?) k=9; else temp+=in9-0; if(k=9) for(t=0;t11) break; if(t=9) couttendl; else if(t=10) coutXendl; else cout-1endl; else for(t=0;t11) break; if(t=9) couttendl; else cout-1endl; return 0; 2688#include using namespace std; int main() char str80; int num6; memset(num, 0, sizeof(num); gets(str); int i; f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论