A题
会格式化输出就行
printf("%.lf\n",y,sum2);中
y是控制的位数 :*
#include<iostream>
#include<cstdio>
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{
int t,a,b,y;
double sum1,sum2;
double x=exp(1);
cin>>t;
while(t--)
{
cin>>a>>b>>y;
sum1=pow(x,a);
sum2=sum1*b;
printf("%.*lf\n",y,sum2);//
}
}
B题
和A题一样
#include<iostream>
#include<math.h>
#include<algorithm>
#include<cstdio>
using namespace std;
int main()
{
int t;
int a,b,c;
cin>>t;
while(t--)
{
cin>>a>>b>>c;
double sum;
sum=pow(a,exp(1))/b;
printf("%.*lf\n",c,sum);
}
}
C题
快速幂函数
(ab)%p==(a%p)(b%p)%p
#include<iostream>
#include<math.h>
#include<cstdio>
#include<algorithm>
typedef long long int ll;
using namespace std;
ll ksm(ll a,ll b,ll m)
{
ll ans=1;
if(b==0)
return 0;
a=a%m;
while(b>0)
{
if(b&1)
{
ans=(ans*a)%m;
}
a=(a*a)%m;
b>>=1;
}
return ans;
}
int main()
{
ll a,b,c,d,e;
cin>>a>>b>>c>>d>>e;
ll x=(a%e)*(b%e)%e;
ll y=c*d;
cout<<ksm(x,y,e)<<endl;
}
D题
模拟题
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<math.h>
using namespace std;
const int maxn=505;
int main()
{
int n,m;
cin>>n>>m;
int x[maxn],y[maxn];
int sum[maxn*maxn];
for(int i=0;i<=n;i++)
{
cin>>x[i];
}
for(int j=0;j<=m;j++)
{
cin>>y[j];
}
for(int i=0;i<=n;i++)
{
for(int j=0;j<=m;j++)
{
sum[i+j]+=x[i]*y[j];
}
}
for(int i=0;i<=n+m;i++)
{
if(i!=n+m)
cout<<sum[i]<<" ";
else
cout<<sum[i];
}
}
E题
tanA/2tanB/2+tanB/2tanC/2+tanC/2tanA/2=1
然后sinAr最大值为r
所以最大值为1+r
#include<iostream>
using namespace std;
int main()
{
double r;
cin>>r;
printf("%.2lf",r+1);
}
F题
模拟题,注意输出就可以了
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<math.h>
using namespace std;
const int maxn=1005;
int zhe[maxn][maxn]={0},zuo[maxn][maxn]={0},fu[maxn][maxn]={0};
int main()
{
int x,y,z,n;
cin>>x>>y>>z>>n;
int a,b,c;
for(int i=1;i<=n;i++)
{
cin>>a>>b>>c;
zhe[b][a]=1;
zuo[b][c]=1;
fu[c][a]=1;
}
for(int i=y;i>=1;i--)
{
for(int j=1;j<=x;j++)
{
if(zhe[i][j]==1)
cout<<"x";
else
cout<<".";
}
cout<<" ";
for(int k=1;k<=z;k++)
{
if(zuo[i][k]==1)
cout<<"x";
else
cout<<".";
}
cout<<endl;
}
cout<<endl;
for(int i=1;i<=z;i++)
{
for(int k=1;k<=x;k++)
{
if(fu[i][k]==1)
cout<<"x";
else
cout<<".";
}
cout<<endl;
}
return 0;
}
G题
还不会这样的存图,太弱了还是
H题
看样例的时候要竖着看,每个音符的○位置决定了是哪个音符
char a[10] = {’ ', ‘F’, ‘E’, ‘D’, ‘C’, ‘B’, ‘A’, ‘G’, ‘F’, ‘E’};
#include<iostream>
#include<algorithm>
#include<cstring>
#include<math.h>
#include<cstdio>
using namespace std;
const int maxn=5005;
char s[10][maxn];
char z[maxn];
int main()
{
char a[10] = {' ', 'F', 'E', 'D', 'C', 'B', 'A', 'G', 'F', 'E'};
int n;
cin>>n;
for(int i=1;i<=9;i++)
{
for(int j=1;j<=n;j++)
{
cin>>s[i][j];
}
}
for(int i=1;i<=9;i++)
{
for(int j=1;j<=n;j++)
{
int flag=0;
if(s[i][j]=='|'&&flag==0)
{
z[j]='|';
}
else if(s[i][j]=='o'&&flag==0)
{
z[j]=a[i];
flag=1;
}
}
}
for(int i=1;i<=n;i++)
cout<<z[i];
}
I题
#include<iostream>
#include<math.h>
#include<algorithm>
#include<cstdio>
#include<cstring>
#define mod 998244353
using namespace std;
typedef long long ll;
const int maxn=1e5+5;
ll kt[maxn]={0,1};
ll ksm(ll a,ll b)
{
ll ans=1;
while(b)
{
if(b%2)
ans=ans*a%mod;
a=a*a%mod;
b>>=1;
}
return ans;
}
void inti()
{
for(int i=2;i<=100000;i++)
{
kt[i]=kt[i-1]*(4*i-2)%mod*ksm(i+1,mod-2)%mod;
}
}
int main()
{
inti();
int t;
cin>>t;
int x;
for(int i=1;i<=t;i++)
{
cin>>x;
printf("Case #%d: ",i);
if(x==1)
cout<<0<<endl;
else
cout<<(kt[x]-kt[x-1]+mod)%mod<<endl;
}
}
J题
简单的map用法
map[i]="j"最简单的赋值方法i对应j
还有map的find函数需要用到迭代器,返回的是map中的位置,如果没找到就返回最末尾
#include<iostream>
#include<map>
#include<math.h>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
map<string,string> mapp;
map<string,string >::iterator it;
int main()
{
string s1,s2;
for(int i=1;i<=3;i++)
{
cin>>s1>>s2;
mapp[s2]=s1;
}
int n;
cin>>n;
string s;
for(int i=1;i<=n;i++)
{
cin>>s;
it=mapp.find(s);
if(it!=mapp.end())
cout<<mapp[s]<<endl;
else
cout<<"Fake"<<endl;
}
}