1.int a[10] = {0}; 或者 int a[10] = {}; 可以使数组所有元素初始化全0。
2.1032 挖掘机技术哪家强中的边界问题,
for(int i = 0; i < n; i++)
{
cin >> num >> score;
a[num] += score;
if(maxS <= a[num]) //这里要用<=,而不是<,避免测试事例为1 1 0 的情况
{
maxN = num;
maxS = a[num];
}
}
// for(int i = 0; i <= n; i++) //这个写法是自然的一步一步,全部遍历一遍,但是显然没有上面的快
// {
// if(maxS < a[i])
// {
// maxN = i;
// maxS = a[i];
// }
// }
3.1011 A+B 和 C这个题目竟然用long long int
就能ac,我还想用高精度加法呢,但是我记的那个高精度只能处理正数,还得另外判断;
写一下:
#include<iostream>
#include<vector>
using namespace std;
const int N = 10e5 + 10;
vector<int> ADD (vector<int> A, vector<int> B)
{
vector<int> C;
int t = 0;
for(int i = 0; i < A.size() || i < B.size(); i++)
{
if(i < A.size()) t += A[i];
if(i < B.size()) t += B[i];
C.push_back(t % 10);
t /= 10;
}
if(t) C.push_back(1);
return C;
}
int main ()
{
string a, b;
vector<int> A, B;
cin >> a >> b;
for(int i = a.size()-1; i >= 0; i--) A.push_back(a[i]-'0');
for(int i = b.size()-1; i >= 0; i--) B.push_back(b[i]-'0');
vector<int> C = ADD(A, B);
for(int i = C.size()-1; i >= 0; i--) cout << C[i];
return 0;
}
这个只是高精度加法,但是要做这个题,还得判断正负,有点麻烦、、、、
#include<iostream>
#include<cmath>
using namespace std;
const int N = 10e7 + 10;
int main ()
{
int l, r;
cin >> l >> r;
// double res = round((r - l) / 100);
// cout << res;
int res = round((r - l) / 100.0);
// cout << endl << res << endl;
// int t = (r - l) % 100;
// if (t >= 50) res ++;
int h, m, s;
h = res / 3600;
res = res % 3600;
m = res / 60;
res = res % 60;
s = res;
// cout << h << ":" << m << ":" << s << endl;
printf("%02d:%02d:%02d",h,m,s); //%d是整型输出格式。02的意思是如果输出的整型数不足两位,左侧用0补齐。
return 0;
}
注意两点:1、一个是round四舍五入函数的使用,注意/
后100.0
,不然会是整数,不是想要的浮点数;
2、printf的输出格式问题,很好用%d
是整型输出格式。02
的意思是如果输出的整型数不足两位,左侧用0补齐。
这里要注意可以提前找到该放的合适位置,但是要注意m要取n的模;
#include <iostream>
using namespace std;
int main()
{
int N, M;
int arr[105];
cin >> N >> M;
for(int i=0;i<N;++i) cin >> arr[(i+M)%N];
cout << arr[0];
if(N>1) for(int i=1;i<N;++i) cout << " " << arr[i];
return 0;
}