题目描述:小h的老师刚教了她做乘法她很喜欢形同P×S=1111这样的算式小h希望对一个给定的奇数PP100000000保证其个位数字不是5求一个整数S使得P×S=1111在给定的条件下解S必存在。小h希望你输出S的全部数字和乘积的数字位数位数不超过10000000位。输入:输入一行一个正整数代表问题描述中的P输出:输出两行一行是S的全部数字。第二行一个整数表示乘积的数字位数。样例输入:13样例输出
#include <iostream>
#include <vector>
using namespace std;
vector<int> multiply(vector<int>& num, int x) {
int carry = 0;
for (int i = num.size() - 1; i >= 0; i--) {
int product = num[i] * x + carry;
num[i] = product % 10;
carry = product / 10;
}
while (carry) {
num.insert(num.begin(), carry % 10);
carry /= 10;
}
return num;
}
vector<int> divide(vector<int>& num, int x) {
vector<int> result;
int remainder = 0;
for (int i = 0; i < num.size(); i++) {
int dividend = remainder * 10 + num[i];
result.push_back(dividend / x);
remainder = dividend % x;
}
while (result.size() > 1 && result[0] == 0) {
result.erase(result.begin());
}
return result;
}
int main() {
int P;
cin >> P;
vector<int> num(1, 1);
int S = 1;
while (S % P != 0) {
num = multiply(num, 10);
S++;
}
vector<int> digits = divide(num, P);
for (int i = 0; i < digits.size(); i++) {
cout << digits[i];
}
cout << endl;
cout << digits.size() << endl;
return 0;
}
``
原文地址: https://www.cveoy.top/t/topic/ipp3 著作权归作者所有。请勿转载和采集!