【题目链接】
【题目考点】
1. 复合赋值表达式
表格中两列对应写法是等价的
写法1 | 写法2 |
---|---|
a = a + b | a += b |
a = a - b | a -= b |
a = a * b | a *= b |
a = a / b | a /= b |
a = a % b | a %= b |
【解题思路】
糖果均分后,如果有多余的,就吃掉。例如8个糖果三等分,每份2个,剩下2个吃掉。每份数量为8/2,进行整除运算。
【题解代码】
解法1:用cin, cout
cout << setw(x) 按x位宽度输出
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a, b, c, d, e;
cin >> a >> b >> c >> d >> e;
a /= 3; b += a; e += a;
b /= 3; a += b; c += b;
c /= 3; b += c; d += c;
d /= 3; c += d; e += d;
e /= 3; d += e; a += e;
cout << setw(5) << a << setw(5) << b << setw(5) << c << setw(5) << d << setw(5) << e;
return 0;
}
解法2:用scanf, printf
printf("%md") 按m位宽度输出
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a, b, c, d, e;
scanf("%d %d %d %d %d", &a, &b, &c, &d, &e);
a /= 3; b += a; e += a;
b /= 3; a += b; c += b;
c /= 3; b += c; d += c;
d /= 3; c += d; e += d;
e /= 3; d += e; a += e;
printf("%5d%5d%5d%5d%5d", a, b, c, d, e);
return 0;
}
解法3:用数组
#include<bits/stdc++.h>
using namespace std;
#define M 5
int main()
{
int a[M];
for(int i = 0; i < M; ++i)
cin>>a[i];
for(int i = 0; i < M; ++i)
{
int t = a[i]/3;
a[i] = t;
a[(i + M - 1)%M] += t;
a[(i + M + 1)%M] += t;
}
for(int i = 0; i < M; ++i)
cout<<a[i]<<' ';
return 0;
}