電卓----ベネルクスアルゴリズムプログラミングコンテスト2016予選

無限の光を放つのは人間の心であり、無限の闇を生み出すのも人間の心であり、光と闇が絡み合って戦うこの世界は、懐かしくて無力な世界です。

                                                   A.ブロックゲーム

説明

あなたは幼稚園児による国際建設コンテストに参加しています。残念ながら、あなたは参加するには年を取りすぎていますが、それでもコンテストを楽しんでいます。ラウンドの合間には、参加者の1人である幼児がブロックで遊んでいるのを見ているときに、コンテストエリアを歩き回っています。彼女がすべての楽しみを持っていることに腹を立て、あなたは彼女にゲームに挑戦することにしました。特定の高さのブロックの2つのスタックをセットアップしました。次に、あなたと幼児は交互に、最大数のブロックを含むスタックからいくつかのブロックを削除します(両方のスタックが同じ数のブロックを持っている場合、現在のプレイヤーはどちらかのスタックを選択してブロックを削除できます)。削除されるブロックの数は、小さいスタックのブロック数の正の倍数でなければなりません。たとえば、5ブロックのスタックと23ブロックのスタックがある場合、次に、現在のプレイヤーは23ブロックのスタックから5、10、15、または20ブロックを削除できます。スタックの1つを空にしたプレイヤーがゲームに勝利します。優雅に最初の移動を決定しましたが、心配があなたを襲います–この不正な未就学児がまだあなたを倒すことができるでしょうか?

入力

ブロックの2つのスタックの初期サイズである1 <= N、M <= 10 ^ {18} 1018を満たす2つの整数NおよびMを持つ1行。

出力

1つの単語を含む1行を出力します。正しくプレイすれば勝利することが保証されている場合は「勝つ」という単語が出力され、対戦相手が負けるように強いられる場合は「失う」という単語が出力されます。

出力中の各行の終わりの余分なスペースは、回答の正確さに影響しません

サンプル入力1コピー

3 2

サンプル出力1コピー

失う

入力例2のコピー

3 3

出力例2のコピー

勝つ

サンプル入力3コピー

5 2

出力例3のコピー

勝つ
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#include<climits>//INT_MAX
#define PP pair<ll,int>
#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3fll
#define dinf 1000000000000.0
#define PI 3.1415926
typedef long long ll;
using namespace std;
int const mod=1e9+7;
const int maxn=3e5+10;
ll M,N,ct;
int main(){
	cin>>N>>M;
	ll fg=0,mx=max(N,M),mi=min(M,N);
	if(mx%mi==0)
		cout<<"win"<<endl;
	else{
//		cout<<mx<<' '<<mi<<endl;
		while(mx%mi!=0){
			if(mx/mi>1){
				fg=1;
				break;
			}
			ct+=1;
			ll ls=mx%mi;
			mx=mi;
			mi=ls;
		}
//		cout<<fg<<endl;
		if(fg==0&&ct%2==1)
			cout<<"lose"<<endl;
		else
			cout<<"win"<<endl;
	}
	return 0;
}

                                        C.広場の完成

故郷の中心部には、駅の近くに、適切に_Station Square_と呼ばれる古い広場があります。以前は完全な正方形のように見えました。長さの等しい4つの辺を直角につないだものです。しかし、第二次世界大戦の爆撃によって四隅の1つが破壊されたため、何十年もの間このようには見えませんでした。戦後、広場は四分円として再建され、それ以来、そのように見えてきました。(つまり、仮説が直線ではなく円弧であることを除いて、二等辺三角形のように見えます。)これは、サンプル入力1に対応する下の図に示されています。 

画像

 

図1:最初の入力例の図。

最近、市議会は、駅広場とその周辺を完全に改造することを可決しました。これには、駅前広場を元の状態に復元することも含まれます。したがって、4番目のコーナーの正確な位置を決定する必要があります。この仕事は普通の高齢者には複雑すぎるため、市は一流の科学者を雇うことにしました。それはあなたでしょう!市が広場を完成するのを手伝ってください、そうすればあなたは大いに報われるでしょう!

入力

入力は3行あります。各行には、現在の正方形のいずれかの角のxx座標とyy座標を示す2つの整数が含まれています(-10 ^ 4 \ leq x、y \ leq 10 ^ 4−104≤x、y≤104)。 

出力

長い間失われた4番目のコーナーのxx座標とyy座標を示す、2つのスペースで区切られた整数で1行を出力します。

出力中の各行の終わりの余分なスペースは、回答の正確さに影響しません

サンプル入力1コピー

2 -5 
-8 -1 
-5 -8

サンプル出力1コピー

-1 2

入力例2のコピー

0 0 
1 0 
1 1

出力例2のコピー

0 1

サンプル入力3コピー

2-1 
-2 3 
2 7

出力例3のコピー

6 3
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#include<climits>//INT_MAX
#define PP pair<ll,int>
#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3fll
#define dinf 1000000000000.0
#define PI 3.1415926
typedef long long ll;
using namespace std;
int const mod=1e9+7;
const int maxn=3e5+10;
int x[5],y[5],X,Y;
int main(){
	int q1,q2,q3,p1,p2,p3;
	for(int i=1;i<=3;i++)
		cin>>x[i]>>y[i];
	q1=x[1]-x[2];
	p1=y[1]-y[2];
	q2=x[1]-x[3];
	p2=y[1]-y[3];
	q3=x[2]-x[3];
	p3=y[2]-y[3];
//	cout<<k1<<' '<<k2<<' '<<k3<<endl;
	if(q1*q2+p1*p2==0){
		X=x[3]-q1;
		Y=y[3]-p1;
		cout<<X<<' '<<Y<<endl;
	}
	else if(q1*q3+p1*p3==0){
		X=x[3]+q1;
		Y=y[3]+p1;
		cout<<X<<' '<<Y<<endl;
	}
	else if(q2*q3+p2*p3==0){
		X=x[2]+q2;
		Y=y[2]+p2;
		cout<<X<<' '<<Y<<endl;
	}
	return 0;
}

 

おすすめ

転載: blog.csdn.net/weixin_44170305/article/details/108415294