感慨
最终就做出来一个题,第二题差一点公式想错了,又是一波掉分,不过我相信我一定能爬上去的
A Find Divisible(思维)
上来就T了,后来直接想到了题解的O(1)解法,直接输出左边界和左边界*2即可
代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
long long x,y,t;
cin>>t;
while(t--)
{
cin>>x>>y;
cout<<x<<" "<<x*2<<"\n";
}
}
B Substring Removal(思维)
我这里想到了有两种情况,其中第一种情况想的完全是正确的,第二种情况想的公式有问题。正确公式是(l+1) ×(r+1)我当时直接想的是l×r+2
代码
#include <bits/stdc++.h>
using namespace std;
int bk[300],bk1[300],mk[300],p,sum;
long long ans;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
long long n,t1=0,t2=0;
cin>>n;
string a;
cin>>a;
for(int i=0;i<a.size();i++)
bk[a[i]-'a']++;
for(int i=0;i<26;i++)
if(bk[i]>=2)
sum++,mk[p++]=i,bk1[i]++;
for(int i=0;i<a.size();i++)
if(a[i]==a[0])
t1++;
else
break;
for(int i=a.size()-1;i>=0;i--)
if(a[i]==a[a.size()-1])
t2++;
else
break;
if(a[0]==a[a.size()-1])
{
ans=(t1+1)*(t2+1);
ans%=998244353;
cout<<ans;
}
else
cout<<t1+t2+1;
}
C Polygon for the Angle(数学)
完全的数学题,这里得记住这个结论
正多边形中存在的角度的范围是180k/n(其中n是边数,1<=k<=n-2)
这样我们可以求出每个正多边形都有可能有多少度角了
具体直接的算法是运用gcd,其中gnu包含了一个内置的gcd函数__gcd
算出给定的角度与180的gcd,然后用原来的角度/gcd算出了k然后180/gcd算出了n
其中如果k+1==n那么n*=2因为要保证k<=n-2
代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t;
cin>>t;
while(t--)
{
int ang;
cin>>ang;
int g=__gcd(ang,180);
int k=ang/g;
int n=180/g;
if(k+1==n)
k*=2,n*=2;
cout<<n<<"\n";
}
}