欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > PTA乙级1006~1010【c++】

PTA乙级1006~1010【c++】

2025/1/30 11:34:48 来源:https://blog.csdn.net/m0_65620244/article/details/145268844  浏览:    关键词:PTA乙级1006~1010【c++】

1006 换个格式输出整数

#include <iostream>
using namespace std;int main(){int n;cin >> n;int b = n / 100;int s = n / 10 % 10;int g = n % 10;for (int i = 0; i < b; i ++ ) cout << 'B';for (int i = 0; i < s; i ++ ) cout << 'S';for (int i = 0; i < g; i ++ ) cout << i + 1;return 0;
}

1007 素数对猜想

#include <iostream>
using namespace std;
const int N = 1e5 + 10;
bool st[N];
int p[N], cnt, res;//素数筛 
void get_prime(int n){for (int i = 2; i <= n; i ++ ){if (!st[i]){p[cnt ++ ] = i;if (cnt > 1 && p[cnt - 1] - p[cnt - 2] == 2) res ++;}for (int j = 0; p[j] <= n / i; j ++ ){st[p[j] * i] = true;if (i % p[j] == 0) break;}}
}int main(){int n;cin >> n;get_prime(n);cout << res;return 0;
}

其实没必要,纯纯暴力也能过:(如下)

#include <iostream>
using namespace std;bool is_prime(int n){for (int i = 2; i <= n / i; i ++ ){if (n % i == 0) return false;}return true;
}int main(){int n, t = 3, res = 0;cin >> n;for (int i = 3; i <= n; i ++ ){if (is_prime(i)){if (i - t == 2) res ++;t = i;}}	cout << res << endl;return 0;
}

1008 数组元素循环右移问题

不移动数组的版本:

#include <iostream>
using namespace std;int main(){int n, m;cin >> n >> m;m %= n;int a[n];for (int i = 0; i < n; i ++ ) cin >> a[i];for (int i = n - m; i < n; i ++ ) cout << a[i] << ' ';for (int i = 0; i < n - m; i ++ ){if (i == n - m - 1) cout << a[i] << endl;else cout << a[i] << ' ';}return 0;
}

老老实实移动数组的版本:

#include <iostream>
#include <algorithm>
using namespace std;int main(){int n, m;cin >> n >> m;m %= n;int a[n];for (int i = 0; i < n; i ++ ) cin >> a[i];reverse(a, a + n);reverse(a, a + m);reverse(a + m, a + n);for (int i = 0; i < n - 1; i ++ ) cout << a[i] << ' ';cout << a[n - 1];return 0;
}

用队列的版本:

#include <iostream>
#include <queue>
using namespace std;int main(){int m, n;cin >> n >> m;m %= n;queue<int> q;for (int i = 0; i < n; i ++ ){int t;cin >> t;q.push(t);}if (m){for (int i = 0; i < n - m; i ++ ){int t = q.front();q.pop();q.push(t);}		}while (q.size() > 1){cout << q.front() << ' ';q.pop();}cout << q.front();return 0;
}

1009 说反话

温馨提示:循环输入按Ctrl+Z结束输入

#include <iostream>
#include <stack>
#include <string>
using namespace std;int main(){stack<string> S;string t;while (cin >> t) S.push(t);while (S.size() > 1){cout << S.top() << ' ';S.pop();}cout << S.top();return 0;
}

1010 一元多项式求导

#include <iostream>
using namespace std;int main(){int n, m;bool flag = false;while(cin >> n >> m){if (flag && m && n) cout << ' ';if (!m || !n) continue;else{cout << n * m << ' ' << m - 1;flag = true;}}if (!flag) cout << "0 0";return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com