KS11. latex爱好者
描述
输入描述
每个测试用例的输入包含两行。输出描述
对于每个测试用例,输出最大允许的字符大小S示例1
输入:
1 10 4 3 10
输出:
3
示例2
输入:
2 10 4 3 10 10
输出:
2
C 解法, 执行用时: 2ms, 内存消耗: 360KB, 提交时间: 2020-05-10
#include <stdio.h> #include <math.h> int main(){ int n,p,s; double h,w; scanf("%d %d %lf %lf",&n,&p,&h,&w); int i,j,nh,nw,max; double a[n],num1=0; for(i=0;i<n;i++) { scanf("%lf",&a[i]); } for(i=1;i<100;i++) { s=i; nw=floor(w/s); nh=floor(h/s); num1=0; for(j=0;j<n;j++) { num1=num1+ceil(a[j]/nw); } num1=(double)num1; if(ceil(num1/nh)>p) { max=i-1; break; } } printf("%d",max); }
C 解法, 执行用时: 2ms, 内存消耗: 364KB, 提交时间: 2020-04-29
#include <stdio.h> #include <math.h> int main(){ int n,p,s; double h,w; scanf("%d %d %lf %lf",&n,&p,&h,&w); int i,j,nh,nw,max; double a[n],num1=0; for(i=0;i<n;i++) { scanf("%lf",&a[i]); } for(i=1;i<100;i++) { s=i; nw=floor(w/s); nh=floor(h/s); num1=0; for(j=0;j<n;j++) { num1=num1+ceil(a[j]/nw); } num1=(double)num1; if(ceil(num1/nh)>p) { max=i-1; break; } } printf("%d",max); }
C++14 解法, 执行用时: 2ms, 内存消耗: 368KB, 提交时间: 2020-05-18
#include <stdio.h> #include <math.h> int main(){ int n,p,s; double h,w; scanf("%d %d %lf %lf",&n,&p,&h,&w); int i,j,nh,nw,max; double a[n],num1=0; for(i=0;i<n;i++) { scanf("%lf",&a[i]); } for(i=1;i<100;i++) { s=i; nw=floor(w/s); nh=floor(h/s); num1=0; for(j=0;j<n;j++) { num1=num1+ceil(a[j]/nw); } num1=(double)num1; if(ceil(num1/nh)>p) { max=i-1; break; } } printf("%d",max); }
C 解法, 执行用时: 2ms, 内存消耗: 368KB, 提交时间: 2019-08-01
#include<stdio.h> #include<math.h> int main() { int i,j,n,p,h,w,s_test,max_square,sum_words,h_max_all,h_max_sum,w_max; float s_start; int *parr; scanf("%d%d%d%d",&n,&p,&w,&h); parr=(int *)malloc(n*sizeof(int)); sum_words=0; for(i=0;i<n;i++){ scanf("%d",&parr[i]); sum_words+=parr[i]; } max_square=h*w*p; s_start=pow((float)max_square/(float)sum_words,0.5); s_test=(int)s_start; // printf("out of while() s_start:%f,s_test:%d\n",s_start,s_test); while(1){ w_max=w/s_test; h_max_all=h/s_test*p; h_max_sum=0; for(i=0;i<n;i++){ if(parr[i]%w_max){ h_max_sum+=parr[i]/w_max+1; // printf("%d\t",parr[i]/w_max+1); } else { h_max_sum+=parr[i]/w_max; // printf("%d\t",parr[i]/w_max); } } // printf("\ns_test:%d,w_max:%d,h_max_all:%d,h_max_sum:%d\n",s_test,w_max,h_max_all,h_max_sum); if(h_max_sum<=h_max_all) break; s_test--; } free(parr); parr=NULL; printf("%d\n",s_test); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 372KB, 提交时间: 2019-10-03
#include <stdio.h> #include <math.h> int main(){ int n,p,s; double h,w; scanf("%d %d %lf %lf",&n,&p,&h,&w); int i,j,nh,nw,max; double a[n],num1=0; for(i=0;i<n;i++) { scanf("%lf",&a[i]); } for(i=1;i<100;i++) { s=i; nw=floor(w/s); nh=floor(h/s); num1=0; for(j=0;j<n;j++) { num1=num1+ceil(a[j]/nw); } num1=(double)num1; if(ceil(num1/nh)>p) { max=i-1; break; } } printf("%d",max); }