牛客IOI周赛27-普及组 (补题)
#A
思路:
很容易想到,小猫在墙角,如果你的x,y轴只要有任意一个墙没有桩,小猫都会跑出来,当小猫不会跑出来的时候,答案最小肯定是离原点最近的两个坐标轴上的点,求距离。
代码:
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const double INF=1e9+9;
int main()
{
double nx=INF,ny=INF,x,y;
int n,i;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%lf%lf",&x,&y);
if(x==0)ny=min(ny,y);
if(y==0)nx=min(nx,x);
}
if(nx==INF||ny==INF)printf("Poor Little H!");
else printf("%.10lf",sqrt(nx*nx+ny*ny));
return 0;
}
#B
手推几项,很容易猜,答案就是n*n;但是题目数比较大,要用到高精度,或者PHP。
代码:
n=int(input())
print(n*n)
还是得学一下PHP...
#C
#include<bits/stdc++.h>
using namespace std;
#define de(x) cout<<#x<<" : "<<x<<endl;
const int N=1e6+20;
typedef long long ll;
int n,k;
int main(){
int T;
cin>>T;
while(T--){
ll n,k;
scanf("%lld%lld",&k,&n);
if(k==1){
printf("%lld\n",n-1);//k==1只能用加法,特判。
continue;
}
ll ans=0;
while(n>=k){
ans+=n%k;
ans++;
n/=k;
}
ans+=n-1;//没除尽的,用操作1,++,
printf("%lld\n",ans);
}
}
#D
貌似是图论,以后再说。
算法专题 文章被收录于专栏
怕忘记,好复习