답안 #86437

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
86437 2018-11-26T10:02:13 Z I_use_Brute_force Savrsen (COCI17_savrsen) C++14
0 / 120
3000 ms 81688 KB
 #include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define F first
#define S second
#define pii pair <int, int>
#define sz(a) (int)(a.size()) 
#define resize(v) v.resize(unique(all(v)) - v.begin()); 
#define all(a) a.begin(), a.end()
#define forit(it, s) for(__typeof(s.begin()) it = s.begin(); it != s.end(); it ++)

using namespace std;

void Fast_Read_Out()
{
	ios_base::sync_with_stdio(0);
	cin.tie(), cout.tie();
}

void Random()
{
	unsigned int seed;
	asm("rdtsc" : "=A" (seed));
	srand(seed);        
}

unsigned int Time()
{
	 unsigned int time = clock() / 1000.00;
	 return time;
}

const int inf = int(1e9) + 123;
const int N = int(1e7) + 1;

vector <int> v, z;
int lp[N], d[N];
vector <int> pr;
vector <pair <int, int> > per;

void Resheto()
{
	for(int i = 2; i <= N - 1; i++)
	{
		if(lp[i] == 0)
		{
			lp[i] = i;
			pr.pb(i);
		}
		for(int j = 0; j < sz(pr) && pr[j] <= lp[i] && pr[j] * i * 1ll <= N - 1; j++) lp[pr[j] * i] = pr[j];
	}
}

void Prime_Multipliers(int x)
{
	int del = 2;
	int ans = 1;
	v.clear();
	while(x > 1)
	{
		if(d[x]) 
		{
			v.pb(del); 
			break;
		}
		while(x % del == 0) v.pb(del), x /= del;
		del++;
	}
}

int main ()
{
	#ifdef JUDGE
		freopen("input.txt", "r", stdin);
	#endif 
	Random();
	Fast_Read_Out();
	int a, b;
	cin >> a >> b;
	Resheto();
	for(int i = 0; i < sz(pr); i++) d[pr[i]]++;
	long long res = 0;
	if(a == 1) a++, res++;
	for(int j = a; j <= b; j++)
	{
	    if(d[j]) 
	    {
	    	res += j - 1;
	    	continue;
	    }
	    Prime_Multipliers(j);
	    per.clear();
	    int b1 = 1, q = v[0], n = 1;
	    for(int i = 1; i < sz(v); i++)
	    {
	    	if(q != v[i])
	    	{
	    		per.pb(mp(q, n + 1));
	    		q = v[i];
	    		n = 2;
	    	}
	    	else n++;
	    }
	    per.pb(mp(q, n));
	    long long k = 1;
	    for(int i = 0; i < sz(per); i++)
	    {
	    	int sn = b1 * (1 - pow(per[i].F, per[i].S)) / (1 - per[i].F);
	    	k *= sn;
	    }
	    if(k > j) k -= j;
	    res += abs(j - k);
	}
	cout << res << endl;
	#ifdef JUDGE
//		cout << Time() << endl;
	#endif
}
// Easy Peasy Lemon Squeezy                                                            Sometimes it's the very people who no one imagines anything of who do the things no one can imagine.

Compilation message

savrsen.cpp: In function 'void Prime_Multipliers(int)':
savrsen.cpp:57:6: warning: unused variable 'ans' [-Wunused-variable]
  int ans = 1;
      ^~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 184 ms 81392 KB Output isn't correct
2 Incorrect 231 ms 81408 KB Output isn't correct
3 Incorrect 222 ms 81624 KB Output isn't correct
4 Incorrect 206 ms 81624 KB Output isn't correct
5 Execution timed out 3050 ms 81624 KB Time limit exceeded
6 Execution timed out 3038 ms 81624 KB Time limit exceeded
7 Execution timed out 3030 ms 81624 KB Time limit exceeded
8 Incorrect 1744 ms 81688 KB Output isn't correct