T1 时间转换
#include <iostream>
using namespace std;
int main()
{
int s;
cin >> s;
int hh = s / 3600 % 24;
if(hh < 12)
{
cout << "AM ";
}
else
{
cout << "PM ";
hh %= 12;
}
if(hh < 10)
{
cout << '0';
}
cout << hh << ':';
int mm = s % 3600 / 60;
if(mm < 10)
{
cout << '0';
}
cout << mm << ':';
int ss = s % 60;
if(ss < 10)
{
cout << '0';
}
cout << ss;
return 0;
}
T2 数字变换
#include <iostream>
using namespace std;
bool isPrime(int m)
{
if(m <= 1)
{
return false;
}
for(int i = 2; i * i <= m; i++)
{
if( m % i == 0)
{
return false;
}
}
return true;
}
int main()
{
int n;
cin >> n;
if(n == 0 || n == 1)
{
cout << 4;
}
else if(isPrime(n))
{
cout << ((2 == n) ? 4 : n + 1);
}
else
{
for(int i = 2; i * i <= n; i++)
{
if(n % i == 0)
{
cout << n / i;
break;
}
}
}
return 0;
}
T3 小学生的计算题
#include <iostream>
using namespace std;
int main()
{
string s;
cin >> s;
long num = 0;
long long ans = 0;
for(size_t i = 0; i < s.size(); i++)
{
if(s[i] >= '0' && s[i] <= '9')
{
num = num * 10 + s[i] - '0';
}
else if(s[i] == '+' || s[i] == '=')
{
ans += num;
num = 0;
}
}
cout << s << ans << endl;
return 0;
}
T4 序列长度
#include <iostream>
using namespace std;
const int MOD = 1000000007;
const int maxN = 10005;
long long f[maxN];
long long fun(int n)
{
if(f[n])
{
return f[n];
}
long long cnt = 0;
for(int i = 1; i <= n/2; i++)
{
if(i & 1) //奇数
{
int remainder = n % i;
if(remainder <= 1)
{
cnt++;
}
else
{
//余数大于或等于2需要递归
cnt += fun(remainder);
}
}
else //偶数
{
//n/i必然大于等于2,所以要递归
cnt += fun(n / i);
}
cnt %= MOD;
}
return f[n] = cnt;
}
int main()
{
int n;
cin >> n;
cout << fun(n);
return 0;
}