注:困难题暂不解答! 量力而行Q.Q
目录
【Day 1】 练习
#include <iostream>
using namespace std;
int main()
{
// 请在此输入您的代码
cout << "ABC" <<endl;
return 0;
}
【Day 1】三角回文数
#include<bits/stdc++.h>
using namespace std;
int main(){
int x= 0;
for(int i=1; ; i++){
x=x+i;
if(x>20220514){
int b=x;
int a=0;
//数转置
while(b!=0){
a=a*10+b%10;
b/=10;
}
if(a==x){
cout<<x<<endl;
break;
}
a=0;
}
}
}
【Day 2】小平方
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
int cnt=0;
cin>>n;
for(int i=1; i<n; i++){
if((i*i)%n*2<n) cnt++;
}
cout<<cnt<<endl;
}
【Day 2】超级质数
373
- 补充:关于dev c++5.11英文版报错 [Error] 'to_string' was not declared in this scope
- 检查添加命令,原因在于c++1才支持!
#include<bits/stdc++.h>
using namespace std;
//is_prime
bool is_prime(int n){
if(n<=1) return false;
for(int i=2; i<=sqrt(n);i++){
if(n%i==0) return false;
}
return true;
}
//核实
bool check(int n){
string s=to_string(n);
int i=s.size();
for(int j=0; j<i;j++){
for(int k=1;k<=i-j;k++){
string str=s.substr(j,k);
int x=stoi(str);
if(is_prime(x)==0) return false;
}
}
return true;
}
//
int main(){
for(int n=1;n<=INT_MAX;n++){
if(is_prime(n)&&check(n)) {
cout<<n<<endl;
}
}
return 0;
}
【Day 3】考勤刷卡
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;//刷卡条数
cin>>n;
int a[n];
int e=0,b=0,c=0,d=0;
int time;
for(int i=0;i<n;i++){
scanf("%d:%d:%d %d", &e,&b, &c, &d);
a[i]=d;
}
sort(a,a+n);
for(int i=0;i<n;i++){
if(a[i] != a[i-1]){
printf("%d\n",a[i]);
}
}
return 0;
}
【Day 3】最大和
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
//根本就不是dp
using namespace std;
const int N = 10010,inf=0x3f3f3f3f;
int n;
int a[N],f[N];
//质数的判断
bool is_prime(int x)
{
for (int i = 2; i < x / i; ++ i )
if (x % i == 0)
return false;
return true;
}
//遍历所有因子数
int d_prime(int x)
{
for (int i = 2; i <= x; ++ i )
if (x % i == 0 && is_prime(i))//为x的因子同时为质数,由每次于从2开始便得到最小因子
return i;
return 1;
}
int main() {
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
memset(f,-inf,sizeof(f));//初始化
f[1]=a[1];
for(int i=1;i<=n;i++){
int j=d_prime(n-i);//从当前位置所能跳到的最远位置i——i+1到i+d_prime(n-i)
for(int k=i+1;k<=i+j;k++){ //遍历所有的可能跳到的位置
if(f[k] == -inf) f[k] = a[k] + f[i];//如果之前为经过,便直接f[i]+a[k];
else f[k]=max(f[k],f[i]+a[k]);
}
}
cout<<f[n];
return 0;
}
【Day 4】卡片
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,k;
cin>>n; //n位同学
for( k=1; k*(k-1)/2+k<n;k++);
cout<<k;
return 0;
}
【Day 4】第几小
【Day 5】染色时间
【Day 5】单峰序列