1) 입력값이 계속해서 주어질 때
while(cin >> 변수) 로 하면 됨.
2) 모듈러 연산, 나머지 연산
: 맨 밑에 있음.
큰수를 작은 수로 만드는 것임.
#include <iostream>
using namespace std;
#include <vector>
#include <string>
int main()
{
// 3 -> 111
// 7 -> 111111
// n에다가 * 10 + 1만큼식 진행을 하면서,
// 입력되는 n과의 나머지 계산을 진행하면서 0이 나올때의
// 최소값을 구하는 방식으로 하면되지 않을까? 생각을 함.
int input;
while (cin >> input)
{
int cnt = 0;
long long n = 1;
while (1)
{
if (n % input == 0)
{
// 자릿수를 구해야 함.
while (n != 0)
{
n /= 10;
++cnt;
}
cout << cnt << endl;
break;
}
else
n = n * 10 + 1;
}
}
}
-> 시간 초과 발생함.
고찰
: 모듈러 연산을 하지 않아서 시간 초과 발생!
: 모듈러 연산을 하지 않으면, 틀리게 되어 있음.
#include <iostream>
using namespace std;
#include <vector>
#include <string>
int main()
{
// 3 -> 111
// 7 -> 111111
// n에다가 * 10 + 1만큼식 진행을 하면서,
// 입력되는 n과의 나머지 계산을 진행하면서 0이 나올때의
// 최소값을 구하는 방식으로 하면되지 않을까? 생각을 함.
int input = 0;
while (cin >> input)
{
int cnt = 1;
long long n = 1;
while (1)
{
if (n % input == 0)
{
cout << cnt << endl;
break;
}
else
{
n = n * 10 + 1;
// 여기서 한줄을 더 추가해야 함.
n %= input;
++cnt;
}
}
}
}
: long long 이니까 12자리 1000000 000000 10억 처리가능 하잖아???
그런데 이렇게 하면 오류가 발생함.
9999로 하면, long long 도 오버플로우 발생할 수 있따는 것을 예상하고,
나머지 연산을 해야겠다는 것을 생각해야 함.
: 모듈러 연산에 대해서
-> 교안 이랑 강의 참고, 백준 수학 필기 pdf 참고
: 공부하고 정리까지 , 알고리즘 파트에다가도 기록 남겨야 함.