1 条题解

  • 1
    @ 2025-3-30 21:41:00
    #include <iostream>
    #include <string>
    #include <vector>
    #include <algorithm>
    using namespace std;
    int n;
    string s;
    string cal(string & s, int n)
    {
    	string res = "";
    	reverse(s.begin(), s.end());
    	int t = 0;
    	for(int i = 0; i < s.size(); ++ i)
    	{
    		if(s[i] != '.')
    		{
    			t += (s[i] - '0') * n;
    			res += to_string(t % 10);
    			t /= 10;
    		}
    		else res += '.';
    	}
    	while(t)
    	{
    		res += to_string(t % 10);
    		t /= 10;
    	}
    	reverse(res.begin(), res.end());
    	return res;
    }
    int main()
    {
    	cin >> n >> s;
    	
    	for(int i = 0; i < n; ++ i) s = cal(s, 2);
    	int pos = s.find('.');
    	vector<int> res;
    	if(s[pos + 1] >= '5')
    	{
    		int num = 1;
    		for(int i = pos - 1; i >= 0; -- i)
    		{
    			num = (s[i] - '0' + num);
    			res.push_back(num % 10);
    			num /= 10;	
    		}
    		if(num) res.push_back(num % 10);
    		for(int j = res.size() - 1; j >= 0; -- j) cout << res[j];
    	}
    	else
    	{
    		for(int j = 0; j < s.size(); ++ j)
    		{
    			if(s[j] != '.')
    			{
    				cout << s[j];
    			}
    			else break;
    		}
    		return 0;
    	}
        return 0;
    }
    
    • 1

    信息

    ID
    5558
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    2
    已通过
    2
    上传者