P8615 [蓝桥杯 2014 国 C] 拼接平方数
思路:先把数据范围内的平方数打上标记,然后就是遍历这个区间,转成字符串(好拆数据),用substr拆开数据,再强转成整数类型,最后查看拆开的数据是否为平方数
#include <iostream>
using namespace std;
int n,m;
bool f[1000010];int main()
{cin>>n>>m;for(int i=1;i<=1000;i++){f[i*i]=true;}for(int i=n;i<=m;i++){if(f[i]){string s=to_string(i);for(int j=1;j<(int)s.size();j++){string s1=s.substr(0,j);string s2=s.substr(j);int x=stoi(s1),y=stoi(s2);if(f[x]&&f[y]) cout<<i<<endl;}}} return 0;}
P8682 [蓝桥杯 2019 省 B] 等差数列
思路:首先先给数组排个序,然后随便求公差(只为了判断公差是不是0),如果是0就直接输出了,不是0的话就进入循环,找到最小公差,最后求出数列里最少有几项
#include <iostream>
#include <algorithm>
using namespace std;
int n;
int q[100010];int main()
{cin>>n;for(int i=0;i<n;i++){cin>>q[i];}sort(q,q+n);int d=q[1]-q[0];if(d==0) cout<<n;else{for(int i=2;i<n;i++){d=min(d,q[i]-q[i-1]);}cout<<(q[n-1]-q[0])/d+1;}return 0;
}