A - Leyland Number
不能使用pow函数,因为pow是用于浮点数的
使用自定义mypow函数
#include<iostream>
#define int long long
using namespace std;
long long mypow(int x,int y)
{
long long ans=1;
while(y--)
{
ans*=x;
}
return ans;
}
signed main()
{
int a,b;cin>>a>>b;
cout<<mypow(a,b)+mypow(b,a);
}
B - Longest Palindrome
最长回文数,暴力枚举即可
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
int ans=1;
string s;cin>>s;
for(int i=0;i<s.length();i++)
{
for(int j=2;j<=s.length()-i;j++)
{
string ss=s.substr(i,j);
reverse(ss.begin(),ss.end());
if(ss==s.substr(i,j)){
ans=max(ans,j);
}
}
}
cout<<ans<<endl;
}
D - Relative Position
深搜题
定义vis标记是否访问,即该点是否被确定。
#include<iostream>
#include<vector>
#define int long long
using namespace std;
int n,m;
const int MAXN=2e5+5;
struct node{
int target;
int x,y;
};
struct node2{
int x,y;
}pos[MAXN];
int vis[MAXN];
std::vector<std::vector<node>>Go(MAXN);
void dfs(int i,int x,int y)
{
vis[i]=1;
pos[i]={x,y};
for(auto xx:Go[i])
{
if(vis[xx.target]==1) continue;
dfs(xx.target,x+xx.x,y+xx.y);
}
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int a,b,x,y;
cin>>a>>b>>x>>y;
Go[a].push_back({b,x,y});
Go[b].push_back({a,-x,-y});
}
dfs(1,0,0);
for(int i=1;i<=n;i++)
{
if(vis[i]){
cout<<pos[i].x<<" "<<pos[i].y<<endl;
}else{
cout<<"undecidable"<<endl;
}
}
}