0
点赞
收藏
分享

微信扫一扫

第三届越秀区中小学生智能编程线上比赛--C++入门组题解报告

科牛 2022-08-04 阅读 47


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



举报

相关推荐

0 条评论