#1159. 3.判断溢出
3.判断溢出
当前没有测试数据。
3.判断溢出
题目描述

上面的这种错误已经很常见了。我们都知道,即使要把这个乘法的结果赋值给一个更大的数据类型,也要在计算乘法之前先进行类型转换。
而今天我们要解决的问题相对要简单一些。我们将给你一些数和一个数据类型,你需要判断,如果将这些数连续相乘起来,将会在第几个数出现溢出的情况。
输入格式
多组数据。
第一行只有一个整数,表示组数。
每个数据分为两行。
第一行只有一个字符串,表示要检测的数据类型。
第二行有若干正整数,依次表示每一个给出的数,相邻的两个数之间用一个空格隔开。
下面是数据类型的说明表:
| 输入的字符串 | C/C++ | 能表示的最大的数 |
|---|---|---|
| int8 | signed char | 127 |
| unsigned int8 | unsigned char | 255 |
| int16 | signed short | 32767 |
| unsigned int16 | unsigned short | 65535 |
| int32 | signed int | 2147483647 |
| unsigned int32 | unsigned int | 4294967295 |
| int64 | signed long long int | 9223372036854775807 |
| unsigned int64 | unsigned long long int | 18446744073709551615 |
输出格式
对于每个输入数据,输出一行,表示在乘到第几个数的时候溢出了。如果一直都没有溢出,则输出一行。
数据范围与提示
对于所有的输入,每个输入至多含有个输入数据,每行至多有个整数,每个数均为不会超过的正整数。
此外,以下的测试点还有额外的限制:
对于测试点,,,,,输入中不会出现和 ,并且输入的每个数都不会超过;
对于测试点,,,,,输入中每一行至多有一个数。
样例
4
int32 100000 100000 100000
int16 1 2 3 4 5 6 7 8
unsigned int16 1 2 3 4 5 6 7 8
unsigned int8 23333333 33333333
2
8
never
1
说明
第一个数据:在第个数,计算时溢出了;
第二个数据:在第个数,计算(前面的结果)时溢出了;
第三个数据:没有出现溢出;
第四个数据:在第个数,本身就溢出了。