0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

小数点の割り算が含む条件分岐

Posted at

読んで欲しい人

・未来の私。
・詳しい方。(質問あり)

注意

AtCoderのabc189_B - Alcoholic ネタバレあり。

解説

割り算した結果が小数点の可能性がある + 比較する対象が整数の場合は
条件分岐をする時に割り算したい数を比較したい対象に同じ数を掛け算する。
(今のところはここまでの理解)

ACしたコード

// 写経 #30744155

#include <stdio.h>
int	main(void)
{
	int n;//お酒を N 杯
	int x;//高橋君はアルコールの摂取量が X ml を超えると酔っ払います。
	int minus = -1;

	scanf("%d%d",&n,&x);
	// printf("%d %d\n",n,x);

	int v[1000000];
	int p[101];
	int i;
	int sum = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%d%d",&v[i],&p[i]);
		// printf("%d %d\n",v[i],p[i]);

		// sum += v[i] * p[i] / 100;//ここで / 100すると小数点になる可能性があるから正確な数値が出せない。
		sum += v[i] * p[i];
		// printf("sum=%d\n", sum);

		if(x * 100 < sum){				//↑の / 100 できてないからここでxに * 100する。
			printf("%d\n",i + 1);
			return(0);
		}
	}
		printf("%d\n",minus);
	return (0);
}

疑問 && 質問

疑問

printf("%d\n",minus);

最後のこの部分を書く時、今までは

printf("-1\n");

と書いていたけれど、-1と書くと整数ではなくて文字列の-1を出力するように
書いてるのでは?と思いました。
今回は、minusという変数に-1で初期化して整数として出力してみました。

質問
問題文では-1を出力してくださいとしか記載が無いので、今回の問題は
文字列でも整数でもどちらでも良いのかとは思うけれど普通は、-1と記載があれば文字列ではなくて整数で出力すべきだと思うので

printf("%d\n",minus);

こちらの書き方の方が正しいという認識であっているのかどうか判断できる方、教えてください。
(因みに、-1という書き方でもACしました。)

0
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?