답안 #86452

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
86452 2018-11-26T10:40:11 Z I_use_Brute_force Savrsen (COCI17_savrsen) C++14
0 / 120
310 ms 132096 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 ++)
#define int long long

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 = (1e9) + 123;
const int N = (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(x); 
			break;
		}
		while(x % del == 0) v.pb(del), x /= del;
		del++;
	}
}

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]]++;
	double 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));
	    double k = 1;
	    for(int i = 0; i < sz(per); i++)
	    {
	    	double up = (1 - pow(per[i].F, per[i].S));
	    	double down = (1 - per[i].F);
	    	double sn = up / down;
	    	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(long long int)':
savrsen.cpp:58:6: warning: unused variable 'ans' [-Wunused-variable]
  int ans = 1;
      ^~~
savrsen.cpp: At global scope:
savrsen.cpp:72:7: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main ()
       ^
savrsen.cpp: In function 'int main()':
savrsen.cpp:94:10: warning: unused variable 'b1' [-Wunused-variable]
      int b1 = 1, q = v[0], n = 1;
          ^~
# 결과 실행 시간 메모리 Grader output
1 Runtime error 300 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
2 Runtime error 291 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
3 Runtime error 307 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
4 Runtime error 310 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
5 Runtime error 298 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
6 Runtime error 298 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
7 Runtime error 286 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)
8 Runtime error 283 ms 132096 KB Execution killed with signal 9 (could be triggered by violating memory limits)