2020:
#include <cstdio>
#include <algorithm>
using namespace std;
bool cmp(int a, int b)
{
return abs(a) > abs(b);
}
int a[100+7];
int main()
{
int n;
while(scanf("%d", &n), n)
{
for(int i=0; i<n; i++)
scanf("%d", &a[i]);
sort(a, a+n, cmp);
for(int i=0; i<n-1; i++)
{
printf("%d ", a[i]);
}
printf("%d\n", a[n-1]);
}
return 0;
}
2021:
/*
贪心思想,对于每个老师优先发面值大的RMB
*/
#include <cstdio>
#include <algorithm>
using namespace std;
int RMB[] = {100, 50, 10, 5, 2, 1};
int a[100+7];
int main()
{
int n;
while(scanf("%d", &n), n)
{
for(int i=0; i<n; i++)
{
scanf("%d", &a[i]);
}
int ans = 0;
for(int i=0; i<n; i++)
{
for(int j=0; j<6; j++)
{
while(a[i] >= RMB[j])
{
a[i] -= RMB[j];
ans ++;
}
}
}
printf("%d\n", ans);
}
return 0;
}
2022:
/*
利用数组建立二位矩阵,按行列搜索。
*/
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int a[1000+7][100+7];
int main()
{
int n, m;
while(scanf("%d%d", &m, &n) != EOF)
{
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
scanf("%d", &a[i][j]);
}
}
int ans = 0;
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
if(abs(a[i][j]) > ans)
ans = abs(a[i][j]);
}
}
int x, y;
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
if(abs(a[i][j]) == ans)
{
x = i, y = j;
goto out;
}
}
}
out:
printf("%d %d %d\n", x+1, y+1, a[x][y]);
}
return 0;
}
2023:
// 先记录数据,然后逐步求解
// abcd命名法危害很大,一个不注意就搞混乱了
// 如果不写注释千万少用abcd命名法
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int a[50+7][5+7]; // 成绩单
double b[50+7]; // 学生平均成绩
double c[5+7]; // 学科平均成绩
int main()
{
int n, m;
while(scanf("%d %d", &n, &m) != EOF)
{
for(int i=0; i<n; i++)
{
b[i] = 0;
for(int j=0; j<m; j++)
{
scanf("%d", &a[i][j]);
b[i] += a[i][j];
}
b[i] = 1.0 * b[i] / m;
}
memset(c, 0, sizeof(c));
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
c[i] += a[j][i];
}
c[i] = 1.0 * c[i] / n;
}
for(int i=0; i<n-1; i++)
{
printf("%.2lf ", b[i]);
}
printf("%.2lf\n", b[n-1]);
for(int i=0; i<m-1; i++)
{
printf("%.2lf ", c[i]);
}
printf("%.2lf\n", c[m-1]);
int cnt = 0;
bool flag = true;
for(int i=0; i<n; i++)
{
flag = true;
for(int j=0; j<m; j++)
{
if(1.0 * a[i][j] < c[j])
{
// printf("%d %lf Here\n", a[i][j], c[j]);
flag = false;
break;
}
}
if(flag) cnt++;
}
printf("%d\n", cnt);
puts("");
}
return 0;
}
2024:
// 巨坑,此代码不要用g++提交,否则准WA
// 用C++提交AC
// 原因可能是g++对一些函数什么的标准与C++不一样
// 直觉告诉我是getline()的锅,原因是我之前在pta上做练习时g++不支持getline
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
string s;
int n;
cin >> n;
getchar();
while(n--)
{
getline(cin, s);
int len = s.size();
bool flag = true;
if(s[0] != '_' && !(s[0] >= 'a' && s[0] <= 'z' || s[0] >= 'A' && s[0] <= 'Z'))
{
flag = false;
}
for(int i=1; i<len; i++)
{
if(s[i] != '_' && !(s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z') && !(s[i] >= '0' && s[i] <= '9'))
{
flag = false;
break;
}
}
if(flag) cout<<"yes" << endl;
else cout << "no" << endl;
}
return 0;
}
2025:
// 找到最大字符所在的位置,然后遍历到这个位置时就输出(max)
// 并不需要真的插入
#include <iostream>
#include <string>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
string s;
while(cin >> s)
{
int len = s.size();
char maxs = '\0';
for(int i=0; i<len; i++)
{
if(s[i] > maxs)
maxs = s[i];
}
for(int i=0; i<len; i++)
{
cout << s[i];
if(s[i] == maxs) cout << "(max)";
}
cout << endl;
}
return 0;
}
2026:
// 每个单词前都有一个空格,第一个字母单独处理
#include <cstdio>
#include <cstring>
using namespace std;
char str[100+7];
int main()
{
while(gets(str))
{
if(str[0] >= 'a' && str[0] <= 'z')
str[0] -= ('a' - 'A');
int len = strlen(str);
for(int i=1; i<len; i++)
{
if(str[i-1] == ' ' && (str[i] >= 'a' && str[i] <= 'z'))
str[i] -= 'a' - 'A';
}
printf("%s\n", str);
}
return 0;
}
2027:
// 扫面统计就行了
#include <cstdio>
#include <cstring>
using namespace std;
char str[100+7];
int main()
{
int t;
scanf("%d", &t);
getchar();
while(t--)
{
gets(str);
int num[6];
memset(num, 0, sizeof(num));
int len = strlen(str);
for(int i=0; i<len; i++)
{
switch(str[i])
{
case 'a': num[1]++; break;
case 'e': num[2]++; break;
case 'i': num[3]++; break;
case 'o': num[4]++; break;
case 'u': num[5]++; break;
}
}
printf("a:%d\n", num[1]);
printf("e:%d\n", num[2]);
printf("i:%d\n", num[3]);
printf("o:%d\n", num[4]);
printf("u:%d\n", num[5]);
if(t != 0)
puts("");
}
return 0;
}
2028:
// 实现预测到a*b会溢出,但还是因为逻辑不够清晰WA了几发
// n个数求最小公倍数是两两求,拿之前的最小公倍数与下一个数求最小公倍数
// 求最大公约数是拿之前的最大公约数与下一个数求最大公约数
// 我就拿得到的最大公约数和下一个数求最小公倍数,所以当然会WA了
#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long LL;
int gcd(int a, int b)
{
return !b ? a : gcd(b, a%b);
}
int main()
{
int n;
LL ans = 1;
int num, tmp;
tmp = 1;
while(scanf("%d", &n) != EOF)
{
scanf("%d", &num);
tmp = num;
ans = num;
for(int i=1; i<n; i++)
{
scanf("%d", &num);
tmp = gcd(ans, num);
ans = num/tmp * ans;
}
printf("%lld\n", ans);
}
return 0;
}
2029:
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
int t;
cin >> t;
while(t--)
{
string s;
cin >> s;
int len = s.size();
int i = 0, j = len-1;
while(i < j)
{
if(s[i] != s[j]) // 不能写 s[i++] != s[j--]
break;
i++, j--;
}
if(i >= j)
cout<<"yes"<<endl;
else
{
cout << "no" << endl;
}
}
return 0;
}