划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就赢了,输家罚一杯酒。两人同赢或两人同输则继续下一轮,直到唯一的赢家出现。
下面给出甲、乙两人的划拳记录,请你统计他们最后分别喝了多少杯酒。
5
8 10 9 12
5 10 5 10
3 8 5 12
12 18 1 13
4 16 12 15
1 2
#include
#include
using namespace std;
int main()
{
int t;
cin >> t; // 5
int cnt1 = 0;
int cnt2 = 0;
while (t--)
{
int jiacall, jiact, yicall, yiact;
cin >> jiacall >> jiact >> yicall >> yiact;
if ((jiact == jiacall + yicall) && (yiact != jiacall + yicall))
cnt2++;
else if ((yiact == jiacall + yicall) && (jiact != jiacall + yicall))
cnt1++;
}
cout << cnt1 << " " << cnt2 << endl;
return 0;
}
一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?
6 2
1 2 3 4 5 6
5 6 1 2 3 4
#include
#include
const int MAX = 100010;
using namespace std;
int main()
{
int n, m;
cin >> n >> m; // 6 2
int arr[n];
int cnt = 0;
m = m % n;
for (int i = 0; i < n; i++)
cin >> arr[i]; // 1 2 3 4 5 6
for (int i = n - m; i <= n - 1; i++)
{
cout << arr[i] << " ";
cnt++;
}
for (int i = 0; i < n - m; i++)
{
cnt++;
cout << arr[i];
if (cnt < n)
cout << " ";
}
return 0;
}
注意: 这里要使用 m = m % n;修正m,进行保证m比n小