1.分巧克力 (AC100%)
#include <iostream>
using namespace std;
int chocolate[100];
int gcd(int a, int b) {
return (a % b == 0 ? b : gcd(b, a % b));
}
int main(int argc, char const *argv[])
{
int n;
int tmp;
cin >> n;
cin >> chocolate[0];
tmp = chocolate[0];
for(int i = 1; i < n; ++i) {
cin >> chocolate[i];
tmp = gcd(tmp, chocolate[i]);
}
cout << tmp << endl;
return 0;
}
2.除夕夜A (AC100%)
#include <iostream>
using namespace std;
const int SUM_SECOND = 240;
int main(int argc, char const *argv[])
{
int n; // 题数
int m; // 走出房间时间
cin >> n;
cin >> m;
int res = 0; // 做的题数
int sumTime = SUM_SECOND - m;
while(res < n) {
sumTime -= (res + 1) * 5;
if(sumTime >= 0) {
++res;
} else {
break;
}
}
cout << res << endl;
return 0;
}
3.求和A (AC100%)
#include <iostream>
using namespace std;
const int MAX = 1e6;
int num[MAX];
int leftSum[MAX]; // leftSum[i]表示num[0] + num[1] + ... + num[i]
int righSum[MAX]; // rightSum[i]表示num[i] + num[i + 1] + ... + num[n - 1]
void cntLeftEqualsToRight(int n) {
int res = 0;
// left to right
cin >> num[0];
int tmp = num[0];
leftSum[0] = tmp;
for(int i = 1; i < n; ++i) {
cin >> num[i];
tmp += num[i];
leftSum[i] = tmp;
}
// right to left
tmp = num[n - 1];
righSum[n - 1] = tmp;
for(int i = n - 2; i >= 0; --i) {
tmp += num[i];
righSum[i] = tmp;
if(righSum[i + 1] == leftSum[i]) {
++res;
}
}
cout << res << endl;
}
int main(int argc, char const *argv[])
{
int n = 9;
while(cin >> n != NULL) {
cntLeftEqualsToRight(n);
}
return 0;
}