Codeforces Round #653 (Div. 3)

5998 단어 codeforces
A. Required Remainder
때때로 문제를 복잡하게 생각하고 제목은 0-n 최대 k를 구하여 k%=y를 요구한다.자세히 생각해 보면 k와 y가 동여한 다음에 차치는 x의 정수배이다
main(void)
{
	int t;
	int x,y,n;
	cin>>t;
	_0for(m,t)
	{
		scanf("%lld%lld%lld",&x,&y,&n);
		int k=y+(n-y)/x*x;
		printf("%lld
"
,k); } }

B. Multiply by 2, divide by 6
정밀도 문제로 인해 웨이가 자폐되었다.그가 2를 곱하거나 6을 제외하고 1에 도달할 수 있는 걸음수를 구해라.사고방식은 바로 이 수 k=6 n ∗2-m 6 ^ n*2^ {-m} 6n ∗2-m = 3 n ∗ 2 n-m 3^n*2^ {n-m} 3n ?2n-m로 사고방식은 간단하지만 로그를 사용할 때 int 정밀도에 문제가 생길 수 있으니 마지막에 1을 더해야 한다.
C. Move Brackets
보기에는 매우 복잡한 괄호가 일치하는 것 같지만, 사실은 시작과 끝으로만 이동할 수 있기 때문에, 처음부터 일치하지 않는 대수를 통계하면 된다.

main(void)
{
	int n,tt;

	char t;
	cin>>tt;
	_0for(m,tt)
	{
		int ans=0;
		scanf("%d",&n);
		int r=0;
		int l=0;
		getchar();
		for(int i=1;i<=n;i++)
		{
			scanf("%c",&t);
			if(t==')')r++;
			else l++;
			if(r>l)
			{
				ans=max(ans,r-l);
			}
		}
		cout<<ans<<endl;
	}
}




좋은 웹페이지 즐겨찾기