浅谈getchar

我们知道getchar是用来吸收\n 的,话不多说,举个简单的例子:

Anton likes to play chess, and so does his friend Danik.

Once they have played n games in a row. For each game it's known who was the winner — Anton or Danik. None of the games ended with a tie.

Now Anton wonders, who won more games, he or Danik? Help him determine this.

Input

The first line of the input contains a single integer n (1 ≤ n ≤ 100 000) — the number of games played.

The second line contains a string s, consisting of n uppercase English letters 'A' and 'D' — the outcome of each of the games. The i-th character of the string is equal to 'A' if the Anton won the i-th game and 'D' if Danik won the i-th game.

Output

If Anton won more games than Danik, print "Anton" (without quotes) in the only line of the output.

If Danik won more games than Anton, print "Danik" (without quotes) in the only line of the output.

If Anton and Danik won the same number of games, print "Friendship" (without quotes).

Examples

Input

6
ADAAAA

Output

Anton

Input

7
DDDAADA

Output

Danik

Input

6
DADADA

Output

Friendship

Note

In the first sample, Anton won 6 games, while Danik — only 1. Hence, the answer is "Anton".

In the second sample, Anton won 3 games and Danik won 4 games, so the answer is "Danik".

In the third sample, both Anton and Danik won 3 games and the answer is "Friendship".

题目很简单,但是我写的代码一直ac不了,加上getchar之后就ac了,原因很简单,不管是杭电还是其他网页上的编译器,即便你没有多次获取一个值,它也会自动运行多次,我们平时从键盘输入的字符都会存到缓存区里面,包括回车字符,getchar是从缓存区读入一个字符,用法是ch=getchar();如果想要去除缓存区里面的字符,那么就不用赋值,直接getchar();
比如输入”123回车“之后,缓存区就会存入四个字符,第一个是“1”,第二个是“2”,第三个是“3”,第四个是“\n”(换行符,即回车),而getchar每次只从缓存区提取一个字符,假如你提取了三个字符之后,那么缓存区里面就会剩下一个回车,你再输入“123回车”之后,缓存区里面的字符就是
”\n123\n“,这个时候再用getchar()来键入字符,就会提取到\n,所以我们每次键入完之后,就会使用不赋值的getchar();这样的语句来讲换行符吸收掉。

下面是代码:

#include<cstdio>
using namespace std;
main() {
	int n;
	char a;
	scanf("%d",&n);
	int cnt1=0,cnt2=0;
	getchar();//***********要有getchar 
	for(int i=0; i<n; i++) {

		scanf("%c",&a);
		if(a=='A')
			cnt1++;
		else if(a=='D')
			cnt2++;
	}
	if(cnt1>cnt2) printf("Anton\n");
	else if(cnt1==cnt2) printf("Friendship\n");
	else printf("Danik\n");

	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值