L1-001 Hello World (5 分)
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
L1-002 打印沙漏 (20 分)
#include <algorithm>
#include <cstring>
#include <iostream>
#include <vector>
using namespace std;
int a;
int n;
int sum;
char c;
vector<int> v;
int main() {
cin >> n >> c;
a = n;
// 第一层
a--, n--;
v.push_back(1);
// 枚举看看有几层
for (int i = 2; i < 100; i++) {
int t = 2 * (2 * i - 1);
a -= t;
if (a < 0) break;
sum += t;
v.push_back(2 * i - 1);
}
for (int i = v.size() - 1; i >= 0; i--) {
for (int j = 1; j <= (v[v.size() - 1] - v[i]) / 2; j++) cout << ' ';
for (int j = 1; j <= v[i]; j++) cout << c;
cout << endl;
}
for (int i = 1; i < v.size(); i++) {
for (int j = 1; j <= (v[v.size() - 1] - v[i]) / 2; j++) cout << ' ';
for (int j = 1; j <= v[i]; j++) cout << c;
cout << endl;
}
// 输出剩下的数字
cout << n - sum << endl;
return 0;
}
L1-003 个位数统计 (15 分)
#include <algorithm>
#include <cstring>
#include <iostream>
#include <map>
#define x first
#define y second
using namespace std;
string n;
map<int, int> m;
int main() {
cin >> n;
for (int i = 0; i < n.size(); i++) m[n[i] - '0']++;
for (auto node : m) cout << node.x << ':' << node.y << endl;
return 0;
}
L1-004 计算摄氏温度 (5 分)
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int F;
int main()
{
cin >> F;
cout << "Celsius = " << 5 * ( F - 32 ) / 9 << endl;
return 0;
}
L1-005 考试座位号 (15 分)
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1010;
int n;
string id[N];
int ks[N];
int main()
{
cin >> n;
// 准考证号 试机座位号 考试座位号
for(int i = 0;i < n;i ++)
{
string a;
int b, c;
cin >> a >> b >> c;
id[b] = a,ks[b] = c;
}
// 询问试机座位号码
cin >> n;
for(int i = 0;i < n;i ++)
{
int query;
cin >> query;
cout << id[query] << ' ' << ks[query] << endl;
}
return 0;
}
L1-006 连续因子 (20 分)-14分
https://pintia.cn/problem-sets/994805046380707840/problems/994805138600869888
#include <algorithm>
#include <cstring>
#include <iostream>
#include <vector>
using namespace std;
typedef long long LL;
vector<LL> v;
LL n;
int main() {
scanf("%lld", &n);
for (LL i = 2; i < n; i++) {
if (v.size() < 2 && n % (i * (i + 1)) == 0) {
v.resize(0);
v.push_back(i);
v.push_back(i + 1);
}
if (v.size() < 3 && n % (i * (i + 1) * (i + 2)) == 0) {
v.resize(0);
v.push_back(i);
v.push_back(i + 1);
v.push_back(i + 2);
}
if (v.size() < 4 && n % (i * (i + 1) * (i + 2) * (i + 3)) == 0) {
v.resize(0);
v.push_back(i);
v.push_back(i + 1);
v.push_back(i + 2);
v.push_back(i + 3);
}
if (v.size() < 5 && n % (i * (i + 1) * (i + 2) * (i + 3) * (i + 4)) == 0) {
v.resize(0);
v.push_back(i);
v.push_back(i + 1);
v.push_back(i + 2);
v.push_back(i + 3);
v.push_back(i + 4);
}
}
cout << v.size() << endl;
for(int i = 0;i < v.size();i ++)
{
cout << v[i];
if(i != v.size() - 1) cout << '*';
}
cout << endl;
return 0;
}
L1-007 念数字 (10 分)
#include <algorithm>
#include <cstring>
#include <iostream>
#include <map>
using namespace std;
map<char, string> m;
string n;
int main() {
m['-'] = "fu";
m['0'] = "ling";
m['1'] = "yi";
m['2'] = "er";
m['3'] = "san";
m['4'] = "si";
m['5'] = "wu";
m['6'] = "liu";
m['7'] = "qi";
m['8'] = "ba";
m['9'] = "jiu";
cin >> n;
for (int i = 0; i < n.size(); i++) {
cout << m[n[i]];
if (i != n.size() - 1) cout << ' ';
}
cout << endl;
return 0;
}
L1-008 求整数段和 (10 分)
#include <algorithm>
#include <cstring>
#include <iostream>
using namespace std;
int a, b;
int sum;
int main() {
cin >> a >> b;
for (int i = a; i <= b; i++) {
printf("%5d", i);
sum += i;
if ((i - a + 1) % 5 == 0) printf("\n");
}
// 特判换行
if ((b - a + 1) % 5 != 0) printf("\n");
printf("Sum = %d\n", sum);
return 0;
}
L1-009 N个数求和 (20 分)-17分
https://pintia.cn/problem-sets/994805046380707840/problems/994805133597065216
#include <algorithm>
#include <cstring>
#include <iostream>
using namespace std;
const int N = 110;
// 题目要求长整型范围
typedef long long LL;
int n;
LL a[N], b[N];
LL sum;
LL gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
LL lcm(int a, int b) { return a * b / gcd(a, b); }
int main() {
scanf("%d", &n);
int m = 1;
for (int i = 0; i < n; i++) {
scanf("%lld/%lld", &a[i], &b[i]);
m = lcm(m, b[i]);
}
for (int i = 0; i < n; i++) {
a[i] *= (m / b[i]);
sum += a[i];
}
// 处理数字
LL t = gcd(sum, m);
sum /= t;
m /= t;
// 特判负号
if (sum < 0) {
cout << '-';
sum = abs(sum);
}
if (sum % m == 0) // 是不是整数
cout << sum / m << endl;
else if (sum < m) // 有没有整数
cout << sum % m << '/' << m << endl;
else
cout << sum / m << ' ' << sum % m << '/' << m << endl;
return 0;
}
L1-010 比较大小 (10 分)
#include <algorithm>
#include <cstring>
#include <iostream>
using namespace std;
typedef long long LL;
LL a[5];
int main()
{
cin >> a[0] >> a[1] >> a[2];
sort(a , a + 3);
cout << a[0] << "->" << a[1] << "->" << a[2] << endl;
return 0;
}