Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //UVa Q11730
- #include <bits/stdc++.h>
- using namespace std;
- vector<int> prm;
- int vis[1001];
- void init(){
- prm.emplace_back(2);
- for(int i = 3; i < 1000; i += 2){
- bool yes = 1;
- for(int j = 0; j < prm.size(); ++j){
- if(i % prm[j] == 0){
- yes = 0;
- break;
- }
- }
- if(yes)prm.emplace_back(i);
- }
- }
- int main(){
- init();
- int cnt = 0;
- int s,t;
- while(cin >> s >> t){
- if(s == 0 && t == 0)break;
- ++cnt;
- if(s == t){
- cout << "Case " << cnt << ": 0\n";
- continue;
- }
- int ans = -1;
- memset(vis, 0, sizeof(vis));
- deque<int> dq;
- dq.emplace_back(s);
- while(!dq.empty() && ans == -1){
- int tmd = dq.front();
- dq.pop_front();
- //cout << tmd << endl;
- for(int i = 0; i < prm.size() && prm[i] < tmd && ans == -1; ++i){
- int nxt = tmd+prm[i];
- if(nxt > t)break;
- if(tmd % prm[i] == 0 && !vis[nxt]){
- if(nxt == t)ans = vis[tmd] + 1;
- else{
- vis[nxt] = vis[tmd] + 1;
- dq.emplace_back(nxt);
- }
- }
- }
- }
- cout << "Case " << cnt << ": " << ans << '\n';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement