L1-5 判断素数
漏了个1不是素数啊啊啊啊啊啊啊啊啊啊啊,真该死啊
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n;
cin >> n;
while (n--)
{
ll num;
cin >> num;
if(num==1){
cout << "No" << '\n';
continue;
}
if (num < 4) {
cout << "Yes" << '\n';
continue;
}
if ((num + 1) % 6 != 0 && (num - 1) % 6 != 0) {
cout << "No" << "\n";
//continue;
}
else {
int yes = 1;
// for (int i = 6; (i + 1) <= sqrt(num) || (i - 1) <= sqrt(num); i *= 6) {
// if (num % (i + 1) == 0 || num % (i - 1) == 0) {
// cout << "No" << '\n';
// yes = 0;
// break;
// }
// }
for (ll i = 2; i <= sqrt(num); i++) {
if (num % i == 0) {
cout << "No" << '\n';
yes = 0;
break;
}
}
if (yes) {
cout << "Yes" << '\n';
}
}
}
}
L1-7 连续因子
菜鸡一个只想到暴力,思路是两层循环,外层从2到n枚举连续序列的第一个数,内层从i到n枚举连续序列,为了满足最小序列,就当j-i+1>maxn的时候才更新,即只存第一个找到的序列,那自然是最小,然后发现卡tle,想想发现外层没必要枚举到n,sqrt(n)就够了,因为n与大于sqrt(n)的数的因子比小于sqrt(n),那自然不可能找到因子比sqrt(n)大并构成序列,但若n是个素数,会出现maxn没更新成1的情况,要单独处理下
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main() {
ll n;
int ans[20];
scanf("%lld", &n);
int maxn = 0;
ans[1] = n;
for (ll i = 2; i <= sqrt(n); i++) {
ll temp = 1;
for (ll j = i; temp <= n; j++) {
temp *= j;
if (n % temp == 0 && j - i + 1 > maxn) {
maxn = j - i + 1;
//printf("%d",maxn);
//ans[0] = n / temp;
for (int k = 1; k <= maxn; k++) {
ans[k] = i + k - 1;
}
}
}
}
printf("%d\n", max(maxn,1));
printf("%d", ans[1]);
for (int i = 2; i <= maxn; i++) {
printf("*%d", ans[i]);
}
}
L2-2 秀恩爱分得快
纯纯大模拟,以后写大模拟一定多用函数,全堆进main里调都不好调,而且先打好框架在写方便很多
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
#define ll long long
using namespace std;
double mymap[1010][1010] = { 0 };
int juedui(int x) {
if (x < 0)return -x;
return x;
}
int main() {
int n, m;
int sex[1010];
scanf("%d%d", &n, &m);
while (m--)
{
int k;
scanf("%d", &k);
int temp[510];
int temp1[510];
for (int i = 0; i < k; i++) {
char temp2[1010];
scanf("%s", &temp2);
if (temp2[0] == '-') {
temp1[i] = -1;
int temp3 = 0;
int len = strlen(temp2);
for (int i = 1; i < len; i++) {
temp3 = temp3 * 10 + (temp2[i] - '0');
}
temp[i] = temp3;
sex[temp3] = -1;
}
else {
temp1[i] = 1;
int temp3 = 0;
int len = strlen(temp2);
for (int i = 0; i < len; i++) {
temp3 = temp3 * 10 + (temp2[i] - '0');
}
temp[i] = temp3;
sex[temp3] = 1;
}
}
double qin = 1.0 / k;
for (int i = 0; i < k; i++) {
for (int j = 0; j < k; j++) {
if (i == j || temp1[i] * temp1[j] > 0)continue;
mymap[temp[i]][temp[j]] += qin;
}
}
}
char a[1010];
char b[1010];
scanf("%s%s", &a, &b);
int a1 = 0;
int len = strlen(a);
int i=0;
if (a[0] == '-')i = 1;
for (; i < len; i++) {
a1 = a1 * 10 + (a[i] - '0');
}
i = 0;
if (b[0] == '-')i = 1;
int b1 = 0;
len = strlen(b);
for (; i < len; i++) {
b1 = b1 * 10 + (b[i] - '0');
}
int zuiqin = 0;
for (int i = 0; i < n; i++) {
if (mymap[a1][i] > mymap[a1][b1]) {
printf("%s ", a);
if (a[0] == '-') {
printf("%d\n", i);
}
else {
printf("-%d\n", i);
}
zuiqin = 1;
}
}
for (int i = 0; i < n; i++) {
if (mymap[b1][i] > mymap[b1][a1]) {
zuiqin = 1;
}
}
if (zuiqin == 0) {
printf("%s %s\n", a, b);
}
else {
printf("%s %s\n", a, b);
for (int i = 0; i < n; i++) {
if (i == b1)continue;
if (mymap[a1][i] == mymap[a1][b1]) {
printf("%s ", a);
if (a[0] == '-') {
printf("%d\n", i);
}
else {
printf("-%d\n", i);
}
}
}
for (int i = 0; i < n; i++) {
if (mymap[b1][i] > mymap[b1][a1]) {
printf("%s ", b);
if (b[0] == '-') {
printf("%d\n", i);
}
else {
printf("-%d\n", i);
}
}
}
for (int i = 0; i < n; i++) {
if (i == a1)continue;
if (mymap[b1][i] == mymap[b1][a1]) {
printf("%s ", b);
if (b[0] == '-') {
printf("%d\n", i);
}
else {
printf("-%d\n", i);
}
}
}
}
}
L2-3插松枝
大模拟题,以后真该画个图出来写,不要过于相信自己的脑子,逻辑缝缝补补就会发现之前的逻辑给你缝错了
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n, m, k;
stack<int> he;
queue<int> tui;
stack<int> ans;
void out() {
stack<int> temp;
temp.push(ans.top());
ans.pop();
while (!ans.empty())
{
temp.push(ans.top());
ans.pop();
}
printf("%d", temp.top());
temp.pop();
while (!temp.empty())
{
printf(" %d", temp.top());
temp.pop();
}
printf("\n");
}
int main() {
//he.push(0);
scanf("%d%d%d", &n, &m, &k);
for (int i = 0; i < n; i++) {
int temp;
scanf("%d", &temp);
tui.push(temp);
}
//tui.push(0);
while (!tui.empty() || !he.empty())
{
if (ans.empty()) {
if (!he.empty()) {
ans.push(he.top());
he.pop();
if (ans.size() == k) {
out();
goto begin1;
}
}
else {
ans.push(tui.front());
tui.pop();
if (ans.size() == k) {
out();
goto begin1;
}
}
}
while (!he.empty() && he.top() <= ans.top())
{
ans.push(he.top());
he.pop();
if (ans.size() == k) {
out();
goto begin1;
}
}
if (tui.empty() && he.empty())break;
if (tui.empty()) {
out();
goto begin1;
}
else {
while (tui.front() > ans.top())
{
if (he.size() == m) {
out();
goto begin1;
}
he.push(tui.front());
tui.pop();
if (tui.empty())break;
}
if (tui.empty()) {
//break;
out();
goto begin1;
}
else {
ans.push(tui.front());
tui.pop();
if (ans.size() == k) {
out();
goto begin1;
}
}
}
begin1:;
}
if (!ans.empty()) {
out();
}
}
L2-4 哲哲打游戏
这么简单的题放第四个啊啊啊啊啊,为什么,啊啊啊啊啊啊
纯纯模拟,甚至都不搜索一下。
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn = 1e5 + 10;
int n, m, now=1;
vector<int> mymap[maxn];
int save[110];
int num_save = 0;
int main() {
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++) {
int ki, k;
scanf("%d", &ki);
for (int j = 1; j <= ki; j++) {
scanf("%d", &k);
mymap[i].push_back(k);
}
}
for (int i = 0; i < m; i++) {
int a, b;
scanf("%d%d", &a,&b);
if (a == 0) {
now = mymap[now][b-1];
}
else if (a == 1) {
printf("%d\n", now);
save[b] = now;
}
else {
now = save[b];
}
}
printf("%d\n", now);
}