/* 一开始没怎么想,直接就用一想就能想到的方法,果不其然,TLE TLE代码: #include <iostream> #include <cstring> #include <cmath> using namespace std; typedef long long ll; ll n; int main() { int a, x; while (cin >> a) { ll sum = 0; for ( x = 0; ; x++) { sum += pow(10, x); if (sum % a == 0) break; } cout << ++x << endl; } return 0; } 后来想起之前问过的一道题,数论里面经常用到的取模...再就是,得到的那个形式的数字,就是累加后的和,p,是所有位数都是1的一个数,除了pow函数,也能直接用循环实现,这样的话,还能每处理一次,cnt自增一次,否则pow函数需要多次调用,求和还得用一次循环...效率肯定就不高了 这题突破的关键点,就是最终是为了实现,取模a得到余数是0,那么在累加的过程中,就相当于步步都能取模a,知道取模后的结果为0,这时再输出数字中1的个数 以及,这题为了得到全是1的那个数,其实很巧妙,见上上段 但我自己做的时候,就太想当然了,题目有求和就求和,题目有幂就用pow,根本不动脑子想想怎么优化,难怪TLE 注意注意!!!取模是很好的优化方式!!以及,数论忘得太多了,虽然本就没怎么学过,得好好补补 */
#include <iostream> #include <cstring> #include <cmath> using namespace std; typedef long long ll; ll n; int main() { int a; while (cin >> a) { int ans = 1, x = 1; while (x % a) { x = ( (x * 10) + 1 ) % a; ans++; } cout << ans << endl; } return 0; }