本题最主要在于进位,已知N >= 100,因此至少有首位为d1,二位为d2,指数c至少为N的长度-1

因为d2为对第二位数字进行四舍五入的小数部分,所以需要第三位d3判断是否进位,如果d3>=5,则d2 = d2 + 1,否则d2不变

如果d2 == 10,那么进位给d1,d2变为0,d1 = d1+1,否则d1不变

最后看d1,如果d1 == 10,那么最终的位数c = c + 1,d1变为1

最后输出d1.d2*10^c即可

#include <iostream>
using namespace std;

int main() {
    string s;
    cin >> s;
    int d1,d2,d3;
    int c = s.size() - 1;
    d1 = s[0] - '0';
    d2 = s[1] - '0';
    d3 = s[2] - '0';
    if(d3 >= 5) d2++;
    if(d2 == 10){
        d1++;
        d2 = 0;
    }
    if(d1 == 10){
        d1 = 1;
        c++;
    }
    cout << d1 << '.' << d2 << '*' << 10 << '^' << c;
}
// 64 位输出请用 printf("%lld")