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;
}