1101 B是A的多少倍 - PAT (Basic Level) Practice (中文) (pintia.cn)
自己写的STL解法
坑点:刚开始就要把x保留下来,否则最后计算结果的时候x的值已经变了。
思想
先把后n位保留到v里面,比如54,然后逆转一下变为45.
再把剩下的部分保留到vv里面,比如321,再逆转一下变为123,。
最后合并变为45123
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<int>v;
vector<int>vv;
int sum;
int main()
{
int x, n; cin >> x >> n;
int val=x; //这里一定要把x的值先保留下来,最后一步要用到初始x
while (n--)
{
v.push_back(val % 10);
val /= 10;
}
while (val)
{
vv.push_back(val%10);
val /= 10;
}
reverse(v.begin(),v.end());
reverse(vv.begin(),vv.end());
for (auto ch : v)sum = sum * 10 + ch;
for (auto ch : vv)sum = sum * 10 + ch;
double ans=sum*1.0/x;
printf("%.2f", ans);
return 0;
}
别人的代码
二刷
自己写的字符串解法
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
int D;
cin >> s >> D;
int len = s.size();
string qian = s.substr(len - D, D);
string hou = s.substr(0, len - D);
string s2 = qian + hou;
int num1 = stoi(s);
int num2 = stoi(s2);
double ans = num2 * 1.0 / num1;
printf("%.02f", ans);
return 0;
}