A. Help Far Away Kingdom

time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

In a far away kingdom lived the King, the Prince, the Shoemaker, the Dressmaker and many other citizens. They lived happily until great trouble came into the Kingdom. The ACMers settled there.

Most damage those strange creatures inflicted upon the kingdom was that they loved high precision numbers. As a result, the Kingdom healers had already had three appointments with the merchants who were asked to sell, say, exactly 0.273549107beer barrels. To deal with the problem somehow, the King issued an order obliging rounding up all numbers to the closest integer to simplify calculations. Specifically, the order went like this:

  • If a number's integer part does not end with digit 9 and its fractional part is strictly less than 0.5, then the rounded up number coincides with the number’s integer part.

  • If a number's integer part does not end with digit 9 and its fractional part is not less than 0.5, the rounded up number is obtained if we add 1 to the last digit of the number’s integer part.

  • If the number’s integer part ends with digit 9, to round up the numbers one should go to Vasilisa the Wise. In the whole Kingdom she is the only one who can perform the tricky operation of carrying into the next position.

    Merchants found the algorithm very sophisticated and they asked you (the ACMers) to help them. Can you write a program that would perform the rounding according to the King’s order?

  • Input

    The first line contains a single number to round up — the integer part (a non-empty set of decimal digits that do not start with0 — with the exception of a case when the set consists of a single digit — in this case 0 can go first), then follows character «.» (a dot), and then follows the fractional part (any non-empty set of decimal digits). The number's length does not exceed1000 characters, including the dot. There are no other characters in the input data.

    Output

    If the last number of the integer part is not equal to 9, print the rounded-up number without leading zeroes. Otherwise, print the message "GOTO Vasilisa." (without the quotes).

    Sample test(s)
    input
    0.0
    
    output
    0
    input
    1.49
    
    output
    1
    input
    1.50
    
    output
    2
    input
    2.71828182845904523536
    
    output
    3
    input
    3.14159265358979323846
    
    output
    3
    input
    12345678901234567890.1
    
    output
    12345678901234567890
    input
    123456789123456789.999
    
    output
    GOTO Vasilisa.


    解题说明:此题是对一个浮点型的数进行处理,首先判断小数点前一位是否为9,如果不为9就判断小数点后一位是不是超过5,超过5就进1,否则就直接切断。注意到这里进1时只需要对小数点前一位进行加1操作即可,不必担心末位加1会导致再次向前进位,因为末尾为9的情况是单独考虑的。这样题目就简单很多了。


    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    #include <cstring>
    #include <string>
    #include <algorithm>
    using namespace std;
    
    int main()
    {
    	char a[1002];
    	int i;
    	int pos1;
    	scanf("%s",&a);
    	for(i=0;a[i]!='\0';i++)
    	{
    		if(a[i]=='.')
    		{
    			pos1=i;
    		}
    	}
    	if(a[pos1-1]=='9')
    	{
    		printf("GOTO Vasilisa.\n");
    	}
    	else
    	{
    		if(a[pos1+1]>='5')
    		{
    			for(i=0;i<pos1-1;i++)
    			{
    				printf("%c",a[i]);
    			}
    			printf("%c\n",a[i]+1);
    		}
    		else
    		{
    			for(i=0;i<pos1;i++)
    			{
    				printf("%c",a[i]);
    			}
    			printf("\n");
    		}
    	}
    	return 0;
    }


    你可能感兴趣的:(A. Help Far Away Kingdom)