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;
}