sa1378
جمعه 16 آبان 1393, 17:33 عصر
سلام
من بازم توی یه سوال یوساکو گیر کردم
سوال Combination Lock
125415
کدی که من زدم اینه ولی برای ورودی سوال که
50
1 2 3
5 6 7
هست جواب اشتباه میده(جواب اصلی 249...جواب کد من 729)
من احتمالا درست سوال رو متوجه نشدم...یا یه نکته ی سوالو جا انداختم
لطفا بگین چرا الگوریتم من غلط است؟
/*
ID: sa.13781
PROG: combo
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;
#define Max
#define N
#define ll long long
ll tool(char xt[]){ll p=0;for(int i=0;xt[i]!=0;i++)p++;return p;}
void prt(int xt[]){for(int i=0;xt[i]!=0;i++)cout<<xt[i];cout<<"\n";}
ll tavan(ll a,ll b){int p=1;for(int i=0;i<b;i++)p*=a;return p;}
ifstream fin("combo.in");
ofstream fout("combo.out");
int n;
bool eqpass(int x,int pass)
{
int a[5]={0};
for(int i=0;i<5;i++)
{
a[i]=pass+i-2;
if(a[i]>n)
a[i]%=n;
if(a[i]<1)
a[i]+=n;
}
//prt(a);
for(int i=0;i<5;i++)
if(a[i]==x)
return true;
return false;
}
int main()
{
int a[3],b[3],x=0,y=0,z=0;
fin>>n;
fin>>a[0]>>a[1]>>a[2];
fin>>b[0]>>b[1]>>b[2];
for(int i=1;i<=n;i++)
if(eqpass(i,a[0])==true || eqpass(i,b[0])==true)
x++;
for(int i=1;i<=n;i++)
if(eqpass(i,a[1])==true || eqpass(i,b[1])==true)
y++;
for(int i=1;i<=n;i++)
if(eqpass(i,a[2])==true || eqpass(i,b[2])==true)
z++;
fout<<x*y*z<<endl;
return 0;
}
من بازم توی یه سوال یوساکو گیر کردم
سوال Combination Lock
125415
کدی که من زدم اینه ولی برای ورودی سوال که
50
1 2 3
5 6 7
هست جواب اشتباه میده(جواب اصلی 249...جواب کد من 729)
من احتمالا درست سوال رو متوجه نشدم...یا یه نکته ی سوالو جا انداختم
لطفا بگین چرا الگوریتم من غلط است؟
/*
ID: sa.13781
PROG: combo
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;
#define Max
#define N
#define ll long long
ll tool(char xt[]){ll p=0;for(int i=0;xt[i]!=0;i++)p++;return p;}
void prt(int xt[]){for(int i=0;xt[i]!=0;i++)cout<<xt[i];cout<<"\n";}
ll tavan(ll a,ll b){int p=1;for(int i=0;i<b;i++)p*=a;return p;}
ifstream fin("combo.in");
ofstream fout("combo.out");
int n;
bool eqpass(int x,int pass)
{
int a[5]={0};
for(int i=0;i<5;i++)
{
a[i]=pass+i-2;
if(a[i]>n)
a[i]%=n;
if(a[i]<1)
a[i]+=n;
}
//prt(a);
for(int i=0;i<5;i++)
if(a[i]==x)
return true;
return false;
}
int main()
{
int a[3],b[3],x=0,y=0,z=0;
fin>>n;
fin>>a[0]>>a[1]>>a[2];
fin>>b[0]>>b[1]>>b[2];
for(int i=1;i<=n;i++)
if(eqpass(i,a[0])==true || eqpass(i,b[0])==true)
x++;
for(int i=1;i<=n;i++)
if(eqpass(i,a[1])==true || eqpass(i,b[1])==true)
y++;
for(int i=1;i<=n;i++)
if(eqpass(i,a[2])==true || eqpass(i,b[2])==true)
z++;
fout<<x*y*z<<endl;
return 0;
}