結果
| 問題 |
No.2352 Sharpened Knife in Fall
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-07-05 14:44:52 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,705 bytes |
| コンパイル時間 | 1,127 ms |
| コンパイル使用メモリ | 103,672 KB |
| 最終ジャッジ日時 | 2025-02-15 06:14:38 |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 WA * 1 |
| other | AC * 14 WA * 5 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:76:21: warning: format ‘%f’ expects argument of type ‘double’, but argument 2 has type ‘int’ [-Wformat=]
76 | printf("%.13f\n",0);
| ~~~~^ ~
| | |
| | int
| double
| %.13d
ソースコード
#include<iostream>
#include<set>
#include<algorithm>
#include<vector>
#include<string>
#include<set>
#include<map>
#include<numeric>
#include<queue>
#include<cmath>
using namespace std;
typedef long long ll;
const ll INF=1LL<<60;
typedef pair<ll,ll> P;
typedef pair<int,P> PP;
const ll MOD=998244353;
const double PI=acos(-1);
double area(double r,double y){
double theta=acos(y/r);
return r*r*theta - y*sqrt(r*r-y*y);
}
int main(){
int R,K;
cin>>R>>K;
int halfK=K/2;
vector<double> ans;
double upperb=R;
for(int k=1;k<=halfK;k++){
//double ub=upperb;
double ub=R;
double lb=0;
double Sk=1.0*PI*R*R*k/(K+1);
for(int x=0;x<100;x++){
double mid=(ub+lb)/2;
//cout<<"k="<<k<<endl;
//cout<<"ub="<<ub<<endl;
//cout<<"lb="<<lb<<endl;
if(area(R,mid)<=Sk){
ub=mid;
}else{
lb=mid;
}
}
//cout<<"ub="<<ub<<endl;
ans.push_back(ub);
//upperb=ub;
}
sort(ans.begin(),ans.end());//絶対値が小さい順
reverse(ans.begin(),ans.end());//絶対値が大きい
int n=ans.size();
if(K%2==1){
for(int k=0;k<n;k++){
printf("%.13f\n",-ans[k]);
}
//printf("%.13f\n",0.0);
printf("%.13f\n",0);
for(int k=n-1;k>=0;k--){
printf("%.13f\n",ans[k]);
}
}else{
for(int k=0;k<n;k++){
printf("%.13f\n",-ans[k]);
}
for(int k=n-1;k>=0;k--){
printf("%.13f\n",ans[k]);
}
}
}