Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<fstream>
- #include<deque>
- #include<math.h>
- using namespace std;
- deque <int> primi;
- deque <int> utili;
- void calcola_primi(int numeromassimo, int lunghezza, int num[])
- {
- bool primo=true;
- int valore=5;
- primi.push_back(2);
- primi.push_back(3);
- while(primi[primi.size()-1]<=numeromassimo)
- {
- primo=true;
- for(int i=0; i<primi.size() && primi[i]<=sqrt(valore);i++)
- if(valore%primi[i]==0)
- primo=false;
- if(primo){
- primi.push_back(valore);
- if(valore>=(num[0])*(pow(10,lunghezza-1)) && valore <= (num[0]+1)*(pow(10,lunghezza-1)))
- {
- utili.push_back(valore);
- }
- }
- valore+=2;
- }
- }
- int const maxn=8;
- int main()
- {
- ifstream in("input.txt");
- ofstream out("ooutput.txt");
- string s;
- in>>s;
- int lunghezza=s.length(), indice=0;
- char numero[maxn];
- int num[maxn];
- for(int i=0;i<lunghezza;i++)
- numero[i]=s[i];
- for(int i=0;i<lunghezza;i++)
- {
- if(numero[i]=='0')
- num[i]=0;
- if(numero[i]=='1')
- num[i]=1;
- if(numero[i]=='2')
- num[i]=2;
- if(numero[i]=='3')
- num[i]=3;
- if(numero[i]=='4')
- num[i]=4;
- if(numero[i]=='5')
- num[i]=5;
- if(numero[i]=='6')
- num[i]=6;
- if(numero[i]=='7')
- num[i]=7;
- if(numero[i]=='8')
- num[i]=8;
- if(numero[i]=='9')
- num[i]=9;
- if(numero[i]=='*')
- num[i]=-1;
- }
- int cerca=(num[0]+1)*(pow(10,lunghezza-1));
- calcola_primi(cerca, lunghezza, num);
- int solution=0;
- for(int i=0;i<utili.size();i++)
- {
- deque <int> scomposto;
- int tmp=utili[i];
- while(tmp>=10)
- {
- scomposto.push_front(tmp%10);
- tmp/=10;
- }
- scomposto.push_front(tmp%10);
- bool vero=true;
- for(int j=0;j<lunghezza;j++)
- {
- if(num[j]!=-1)
- {
- if(num[j]!=scomposto[j])
- vero=false;
- }
- }
- if(vero)
- solution++;
- }
- out<<solution;
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement