目录
第一题:跑步训练

答案:3880
注意:这是一个非常一节的问题,在考试的时候可能没有想的特别明白的话建议用程序跑一遍。因为我在自己做的时候做错了,然后自己用程序模拟了一遍这个训练,把数据都打印出来自然就明白了。
#include<iostream>
using namespace std;
int main()
{
int res, ans;
int tt = 10000;
int i;
for(i = 1; ; i ++)
{
//此时是休息
if(i % 2 == 0)
{
tt += 300;
cout << "休息" << i << " " << tt << endl;
}
else
{//跑步一分钟
tt -= 600;
cout << "跑步" << i << " " << tt << endl;
}
if(tt < 0) break;
}
ans = i * 60 + tt / 10;
cout << ans << endl;
return 0;
}
第二题:纪念日

答案:25038720
注意:这个还是细节问题,日期注意是否是闰年。
#include<iostream>
using namespace std;
bool isleap(int y)
{
if((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) return true;
return false;
}
int main()
{
int y1 = 1921, y2 = 2020;
int days = 0; //记录天数
for(int i = y1 + 1; i <= y2; i++)
{
if(isleap(i)) days += 366;
else days += 365;
}
days -= 22;
cout << days << endl;
long long ans = days * 24 * 60;
cout << ans << endl;
return 0;
}
第三题:合并检测

第四题:REPEAT程序

第五题:矩阵

第六题:整除序列

#include<iostream>
using namespace std;
int main()
{
long long n;
cin >> n;
while(n)
{
cout << n << " ";
n /= 2;
}
return 0;
}
第七题:解码

#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main()
{
string str;
cin >> str;
stack<char> res;
for(int i = 0; i < str.size(); i++)
{
//不是数字的话先保留起来
if(str[i] >= '0' && str[i] <= '9')
{
int k = str[i] - '0';
for(int j = 1; j < k; j++) cout << res.top();
}
else
{
//不是数字的话先保留起来并输出
res.push(str[i]);
cout << str[i];
}
}
return 0;
}
第八题:走方格


#include<iostream>
#include<algorithm>
using namespace std;
const int N = 40;
int a[N][N];
int n, m, ans;
void dfs(int l, int r)
{
if(l == n && r == n)
{
ans++;
return;
}
if(l > n || n > m) return;
//每次只能向右 或者向下走
if(r + 1 <= m && ((r + 1) % 2 != 0 || l % 2 != 0)) dfs(l, r + 1);
if(l + 1 <= n && ((l + 1) % 2 != 0 || r % 2 != 0)) dfs(l + 1, r);
}
int main()
{
scanf("%d %d", &n, &m);
dfs(1, 1);
printf("%d\n", ans);
return 0;
}
第九题:

暂时只能做出30%的吧,还不敢保证是绝对正确的,跪求大佬给出正确思路~~。
#include<iostream>
#include<algorithm>
#include<string>
#include<sstream>
#include<string.h>
using namespace std;
const int N = 100010;
int a[N];
int n, k, ans;
string to_string(int n)
{
string str;
stringstream ss;
ss << n;
ss >> str;
return str;
}
int main()
{
scanf("%d %d", &n, &k);
for(int i = 0; i < n; i++) scanf("%d", &a[i]);
for(int i = 0; i < n; i++)
{
for(int j = i + 1; j < n; j++)
{
string str1, str2;
str1 = to_string(a[i]);
str2 = to_string(a[j]);
int ans1;
ans1 = a[i];
for(int l = 0; l < str2.size(); l++)
{
ans1 = ans1 * 10 + (str2[l] - '0');
}
if(ans1 % k == 0)
{
// cout << ans1 << " ";
ans++;
}
ans1 = a[j];
for(int l = 0; l < str1.size(); l++)
{
ans1 += ans1 * 10 + (str1[l] - '0');
}
if(ans1 % k == 0)
{
// cout << ans1 << " ";
ans++;
}
}
}
cout << ans << endl;
return 0;
}
有些题还不会哈,题解都看的有点迷迷糊糊的,今后努力~~
本文分享了八道程序设计题的解答思路与代码实现,包括跑步训练的时间计算、纪念日的分钟数统计、矩阵操作等,强调了通过编程模拟解决复杂问题的重要性。
2523





