無聊切題,無聊題解.
1001
題解
暴力模擬
代碼
#include <bits/stdc++.h>
int main()
{
int n, ans = 0;
scanf("%d", &n);
while (n != 1)
{
if (n&1)
n = (3*n+1)/2;
else
n /= 2;
ans ++;
}
printf("%d", ans);
return 0;
}
1002
題解
暴力模擬
代碼
#include <bits/stdc++.h>
const char _[11][11] = { "ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" };
int main()
{
int ans = 0, t;
while (scanf("%1d", &t) != EOF)
ans += t;
char s[110];
sprintf(s, "%d", ans);
for (int i = 0, len = strlen(s); i < len; i++)
printf("%s%c", _[s[i]-'0'], i == len-1 ? '\n' : ' ');
return 0;
}
1003
題解
如果串出現除了P、A、T三個字母之外的字母直接輸出"NO" .
其餘情況看下面的代碼就懂了 .
代碼
#include <bits/stdc++.h>
int n;
char s[110];
int main()
{
scanf("%d", &n);
while (n--)
{
int flag = 1;
scanf("%s", s);
int len = strlen(s);
int a1 = 0, a2 = 0, a3 = 0;
int P = 0,T = 0;
for (int i = 0; i < len; i++)
{
if (s[i] != 'P' && s[i] != 'A' && s[i] != 'T')
{
flag = 0;
break;
}
if (s[i] == 'P')
P++;
if (s[i] == 'T')
T++;
if (s[i] == 'A')
{
if (!P)
a1++;
else
T ? a3++ : a2++;
}
}
if (P != 1 || T != 1 || !a2)
flag = 0;
if (a1 && (a3 % a1 != 0 || a2 > a3/a1))
flag = 0;
printf("%s\n", flag ? "YES" : "NO");
}
return 0;
}
1004
題解
暴力模擬
代碼
#include <bits/stdc++.h>
int n;
struct _
{
char s1[15], s2[15];
int grades;
} __[110];
int main()
{
scanf("%d", &n);
int a = 1, b = 1;
for (int i = 1; i <= n; i++)
{
scanf("%s %s %d", __[i].s1, __[i].s2, &__[i].grades);
if (__[a].grades < __[i].grades)
a = i;
if (__[b].grades > __[i].grades)
b = i;
}
printf("%s %s\n%s %s", __[a].s1, __[a].s2, __[b].s1, __[b].s2);
return 0;
}
1005
題解
爆搜出奇蹟
代碼
#include <bits/stdc++.h>
using namespace std;
int k, vis[11000], a[110];
void dfs(int x)
{
if (x == 2)
{
vis[1] = 0;
return ;
}
if (x & 1)
vis[(3*x+1)/2] = 0, dfs((3*x+1)/2);
else
vis[x/2] = 0, dfs(x/2);
}
int main()
{
scanf("%d", &k);
for (int i = 1; i <= k; i++)
scanf("%d", a+i), vis[a[i]] = 1;
for (int i = 1; i <= k; i++)
if (vis[a[i]]) dfs(a[i]);
vector<int> vec;
for (int i = 100; i >= 1; i--)
if (vis[i])
vec.push_back(i);
for (int i = 0; i < vec.size(); i++)
printf("%d%c", vec[i], i == vec.size()-1 ? '\n' : ' ');
return 0;
}
1006
代碼
#include <bits/stdc++.h>
int main()
{
int n;
scanf("%d", &n);
int a3 = n % 10;
n /= 10;
int a2 = n%10;
n /= 10;
while (n--)
putchar('B');
while (a2--)
putchar('S');
for (int i = 1; i <= a3; i++)
printf("%d", i);
return 0;
}
1007
題解
利用6倍素數篩隨便取的名字
代碼
#include <bits/stdc++.h>
bool is_prime(int x)
{
int len = sqrt(x);
for (int i = 5; i <= len; i += 6)
if (x % i == 0 || x % (i+2) == 0)
return 0;
return 1;
}
int main()
{
int n;
scanf("%d", &n);
int ans = n >= 5 ? 1 : 0;
for (int i = 5; i <= n-2; i += 6)
if (is_prime(i) && is_prime(i+2))
ans++;
printf("%d", ans);
return 0;
}
1008
題解
m只大於等於零,沒給m的最大值爲多少,就當它不會爆int
代碼
#include <bits/stdc++.h>
int main()
{
int n, m, a[110];
scanf("%d%d", &n, &m);
for (int i = 0; i < n; i++)
scanf("%d", a+i);
m = n-m;
while (m <= 0)
m += n;
for (int i = 0; i < n; i++)
printf("%d%c", a[(i+m)%n], i == n-1 ? '\n' : ' ');
return 0;
}
1009
代碼
#include <bits/stdc++.h>
using namespace std;
vector<string> s;
int main()
{
int cnt = 0;
string t;
while (cin >> t)
s.push_back(t);
for (int i = s.size()-1; i >= 0; i--)
{
cout << s[i];
if (i) putchar(' ');
else putchar('\n');
}
return 0;
}
1010
代碼
#include <bits/stdc++.h>
int main()
{
int t1, t2;
scanf("%d%d", &t1, &t2);
if (!t2)
printf("0 0");
else
{
printf("%d %d", t1*t2, t2-1);
while (scanf("%d%d", &t1, &t2) != EOF)
if (t2) printf(" %d %d",t1*t2, t2-1);
}
return 0;
}
1011
代碼
#include <bits/stdc++.h>
#define LL long long
int t;
LL a, b, c;
int main()
{
scanf("%d", &t);
for (int i = 1; i <= t; i++)
{
printf("Case #%d: ", i);
scanf("%lld%lld%lld", &a, &b, &c);
printf("%s\n", a+b > c ? "true" : "false");
}
return 0;
}
1012
代碼
#include <bits/stdc++.h>
using namespace std;
int n, a1, a1_, a2, a2_, a3, a4, a4_, a5, flag = 1, t;
int main()
{
scanf("%d", &n);
while (n--)
{
scanf("%d", &t);
if (t % 10 == 0)
a1 += t, a1_++;
if (t % 5 == 1)
{
a2 += flag * t;
flag = -flag;
a2_++;
}
if (t % 5 == 2)
a3++;
if (t % 5 == 3)
a4 += t, a4_++;
if (t % 5 == 4)
a5 = max(a5, t);
}
if (a1_)
printf("%d ", a1);
else
printf("N ");
if (a2_)
printf("%d ", a2);
else
printf("N ");
if (a3)
printf("%d ", a3);
else
printf("N ");
if (a4_)
printf("%.1f ", a4*1.0/a4_);
else
printf("N ");
if (a5)
printf("%d", a5);
else
printf("N");
return 0;
}
1013
題解
歐拉篩,注意範圍
代碼
#include <bits/stdc++.h>
using namespace std;
const int maxn = 104729;
int m, n, a[maxn], cnt;
bool flag[maxn];
int primer() {
flag[1] = 1;
for (int i = 2; i <= maxn; i++) {
if (!flag[i])
a[++cnt] = i;
for (int j = 1; j <= cnt && i*a[j] <= maxn; j++) {
flag[i*a[j]] = 1;
if (i % a[j] == 0)
break;
}
}
}
int main()
{
scanf("%d%d", &m, &n);
primer();
for (int i = m; i <= n; i++) {
printf("%d%c", a[i], (i-m+1) % 10 == 0 || i == n ? '\n': ' ');
}
return 0;
}
1014
代碼
#include <bits/stdc++.h>
using namespace std;
char s1[66], s2[66], s3[66], s4[66];
char flag[][10] = { "MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN" };
int t1, t2, t3, t4;
int main()
{
scanf("%s %s %s %s", s1+1, s2+1, s3+1, s4+1);
int len1 = strlen(s1+1);
int len2 = strlen(s2+1);
int len3 = strlen(s3+1);
int len4 = strlen(s4+1);
for (int i = 1; i <= min(len1, len2); i++) {
if (t1 && s1[i] == s2[i] &&((s1[i] >= 'A' && s1[i] <= 'N') || isdigit(s1[i]))) {
t2 = i;
break;
}
if (s1[i] == s2[i] && (s1[i] >= 'A' && s1[i] <= 'G') && !t1)
t1 = i;
}
for (int i = 1; i <= min(len3, len4) && !t3; i++)
if (s3[i] == s4[i] && isalpha(s3[i]))
t3 = i;
printf("%s %02d:%02d", flag[s1[t1]-'A'], isdigit(s1[t2])?s1[t2]-'0':s1[t2]-'A'+10, t3-1);
return 0;
}