Codeforces Round #694 (Div. 2) A. Strange Partition

https://codeforces.com/contest/1471/problem/A

题意:花式求和,一种答案先除上取整再相加,另一种先相加再取整。先输出小的,再输出大的。

以下为两个解法

1.手动上取整

 1 //
 2 // Created by w on 2021/1/5.
 3 //
 4 
 5 #include <iostream>
 6 #include <cstdio>
 7 #include <cmath>
 8 #include <algorithm>
 9 
10 typedef long long ll ;
11 const int maxx=1e6;
12 int arr[maxx];
13 using namespace  std;
14 int main()
15 {
16     int t;
17     cin>>t;
18     while (t--)
19     {
20         ll n,x;
21         cin>>n>>x;
22         ll sum1=0;
23         ll sum2=0;
24         int minn,maxx;
25         for(int i=0;i<n;i++)
26         {
27             cin>>arr[i];
28             sum1+=arr[i];
29         }
30         if(sum1%x==0)
31             sum1=sum1/x;
32         else
33             sum1=sum1/x+1;
34         for(int i=0;i<n;i++)
35         {
36             if(arr[i]%x==0)
37                 sum2+=arr[i]/x;//整除的话就不取整了,直接除开就好,因为不会出现小数
38             else
39                 sum2+=arr[i]/x+1;//+1是上取整,因为整形默认舍弃小数
40 
41         }
42         cout<<min(sum1,sum2)<<" ";
43         cout<<max(sum2,sum2)<<endl;
44     }
45     return  0;
46 }

2.用ceil函数取整

 1 //
 2 // Created by w on 2021/1/6.
 3 //
 4 
 5 //
 6 // Created by w on 2021/1/5.
 7 //
 8 
 9 #include <iostream>
10 #include <cstdio>
11 #include <cmath>
12 #include <algorithm>
13 
14 typedef long long ll ;
15 //const int maxx=1e6;
16 //int arr[maxx];
17 using namespace  std;
18 int main()
19 {
20     int t;
21     cin>>t;
22     while (t--)
23     {
24         double n,x;
25         cin>>n>>x;
26         ll sum1=0.0;
27         ll sum2=0.0;
28         int minn=0x3f3f33f;
29         for(int i=0;i<n;i++)
30         {
31             double tmp;
32             cin>>tmp;
33             sum1+=tmp;
34             ll tmp2=ceil(tmp/x);//ceil上取整函数,注意传参传double类型,返回值也是double
35 //            cout<<tmp2<<endl;       但是注意这个题要变成强行转换为整形,否则答案会出现小数会wa
36             sum2+=tmp2;
37         }
38         ll tmp3=ceil(sum1/x);
39 //        cout<<tmp3<<endl;
40 //        cout<<sum2<<endl;
41         cout<<min(tmp3,sum2)<<" ";
42         cout<<max(tmp3,sum2)<<endl;
43     }
44     return  0;
45 }

 

posted @ 2021-01-06 20:23  BlackSnow  阅读(127)  评论(0)    收藏  举报