Re: 11385 - Da Vinci Code
Posted: Sun Jun 09, 2013 1:34 pm
this input sets consider almost all kind of input for this problem.thanks for the inputs 

Code: Select all
#include <iostream>
#include <string>
using namespace std;
typedef long long ll;
ll fib(ll n)
{
if(n == 0)
return 1;
if(n == 1)
return 1;
if(n == 2)
return 2;
return fib(n - 1) + fib(n - 2);
}
#define isnaleph(ch) if(!((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')))
bool check(string s)
{
for (int i = 0; i < s.size(); i++)
{
isnaleph(s[i])
return false;
}
return true;
}
string back_shift (string s)
{
bool flag = false;
while(flag == false)
{
for (int i = 0; i < s.size(); i++)
{
isnaleph(s[i])
{
for (int j = i; j < s.size() - 1; j++)
s[j] = s[j + 1];
s.resize(s.size() - 1);
}
}
flag = check(s);
}
return s;
}
ll spaces (string s)
{
ll k = 0;
for (int i = 0; i < s.size(); i++)
isnaleph(s[i])
k++;
return k;
}
string getallup (string s)
{
for (int i = 0; i < s.size(); i++)
if(s[i] >= 'a' && s[i] <= 'z')
s[i] = char(int(s[i]) - 32);
return s;
}
int main()
{
int n;
cin >> n;
ll a[110] = {0};
string s;
for (int i = 0; i < n; i++)
{
int r;
cin >> r;
for (int j = 0; j < r; j++)
cin >> a[j];
string str = "";
getline(cin, s);
getline(cin, s);
ll sp = spaces(s);
s = back_shift(s);
for (int j = 0; j < r + sp; j++)
{
bool flag = false, flag2 = false;
int no = 0, l = 0;
for (int k = 0; k < r; k++)
{
if(fib(j + 1) == a[k])
{
str += s[k];
flag = true;
break;
}
}
if(flag == false)
str += ' ';
}
str = getallup(str);
cout << str << endl;
}
}
Code: Select all
#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
int fbn[100];
void fibon(void)
{
fbn[0]=1, fbn[1]=2;
for(int r=2; r<41; r++)
fbn[r] = fbn[r-1] + fbn[r-2];
}
int main()
{
// freopen("in.txt", "r", stdin);
int t, cs=0; cin>>t;
int n, i, j, r, nm[100], mx;
char s[100], f[100], res[100];
fibon();
// for(int r=0; r<41; r++)
// cout<<fbn[r]<<" ";
while(t--)
{
memset(s, 0, sizeof(s));
memset(f, 0, sizeof(f));
memset(res, 0, sizeof(res));
mx=0;
cin>>n;
for(i=0; i<n; i++)
{
cin>>nm[i];
}
getchar();
gets(s);
for(i=0, j=0; s[i]!='\0'; i++)
if('A'<=s[i] && s[i]<='Z') f[j++]=s[i];
f[j]='\0';
//puts(f);
for(i=0; i<n; i++)
{
for(r=0; r<41; r++)
{
if(nm[i]==fbn[r])
{
res[r]=f[i];
if(r>mx)mx=r;
break;
}
}
}
for(i=0; i<mx; i++)
if('A'>res[i] || res[i]>'Z') res[i]=' ';
res[mx+1]='\0';
if(cs++!=0) cout<<endl;
for(i=0; res[i]!='\0'; i++)
cout<<res[i];
}
return 0;
}
Code: Select all
#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <cstring>
using namespace std;
int main(){
long long int fib[47];
fib[0]=1;
fib[1]=2;
for(int i=2;i<=46;i++)
fib[i]=fib[i-1]+fib[i-2];
///////////////////// FIB
int n, qt, c, maior, menor;
long long int v[1000];
char word[1002], nova[1002];
bool foi[1000];
scanf("%d",&n);
for(int j=0;j<n;j++){
c=0;
maior=0;
menor=100;
scanf("%d",&qt);
for(int i=0;i<qt;i++)
scanf("%lld",&v[i]);
for(int i=0;i<100;i++)
foi[i]=false;
memset(nova,'0', sizeof(nova));
getchar();
gets(word);
for(int i=0;i<strlen(word);i++){
if(isalpha(word[i])){
for(int k=0;k<46;k++){
if(fib[k]==v[c]){
foi[k]=true;
if(k>maior) maior=k;
if(k<menor) menor=k;
nova[k]=word[i];
c++;
k=48;
}
}
}
}
for(int i=menor;i<maior;i++){
if(!foi[i])
nova[i]=' ';
}
nova[maior+1]='\0';
for(int i=0;nova[i]!='\0';i++)
cout<<nova[i];
printf("\n");
}
return 0;
}
Code: Select all
1
1
8
A
Code: Select all
A
Code: Select all
AC; THANKS brianfry713
Code: Select all
2
11
13 2 89 377 8 3 233 34 144 21 1
OH, LAME SAINT!
15
34 21 13 144 1597 3 987 610 8 5 89 2 377 2584 1
O, DRACONIAN DEVIL!
Code: Select all
String numeros=br.readLine();
String arreglo[]=numeros.split(" ");
//ERROR
Code: Select all
String numeros=br.readLine();
StringTokenizer tk= new StringTokenizer(numeros);
int cont=0;
while(tk.hasMoreTokens()){
int arreglo[cont]=tk.nextToken();
cont++;
}
//GOOD
Code: Select all
2
11
13 2 89 377 8 3 233 34 144 21 1
OH, LAME SAINT!
15
34 21 13 144 1597 3 987 610 8 5 89 2 377 2584 1
O, DRACONIAN DEVIL!