PDA

View Full Version : حروجی اشتباه کد



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;
}

a.r.khoshghalb
جمعه 16 آبان 1393, 18:58 عصر
سوال خوب ترجمه نشده منم فک میکنم درست نفهمیدم. میتونی انگلیسیش رو هم بذاری؟

sa1378
جمعه 16 آبان 1393, 19:31 عصر
سوال خوب ترجمه نشده منم فک میکنم درست نفهمیدم. میتونی انگلیسیش رو هم بذاری؟
اینم انگلیسیش

125418

a.r.khoshghalb
جمعه 16 آبان 1393, 21:50 عصر
با توجه به کدت منم شما هم همون چیزی رو فهمیدی که من فهمیدم. اما به مثالش توجه کن. گفته 1و2و3 اگر ترکیب آقای جان باشه، با 1,Nو5 باز میشه!
اینجا منظورش از n احتمالا هر عددیه! و خوب این با اون چیزی که من و شما فهمیدیم متناقضه!
اکثر سوالای یوساکو خیلی سخت فهمیده میشن :اشتباه:

rahnema1
جمعه 16 آبان 1393, 22:41 عصر
-2 -1 1
-1 1 2
1 2 3
2 3 4
3 4 5
4 5 6
5 6 7
6 7 8
7 8 9

مثلا رمز 123 را در نظر بگیرید
اعداد 2- تا 3 در واقع محدوده 1 را تشکیل می دهند
اعداد 1- تا 4 محدوده 2 و
اعداد 1 تا 5 محدوده 3 را تشکیل می دهند
که هر کدومشون میشه 5 تا
5*5*5 میشه 125
برای 567 هم عدد 125 بدست میاد
125+125 میشه 250
حالا باید خانه هایی که بین دو تا رمز مشترک هستند را به دست بیاریم و از 250 کم کنیم
در ستون اول فقط یک عدد یعنی 3
در ستون دوم یک عدد به نام 4
در ستون سوم هم یک عدد به نام 5
1*1*1 میشه 1
1-250 میشه 249
حالا به جای 1- ما n را قرار می دهیم یعنی بیشترین عدد
حالا اگه خونه های مشترک بیشتر از یکی باشه پیچیده تر میشه

sa1378
شنبه 17 آبان 1393, 14:13 عصر
با توجه به کدت منم شما هم همون چیزی رو فهمیدی که من فهمیدم. اما به مثالش توجه کن. گفته 1و2و3 اگر ترکیب آقای جان باشه، با 1,Nو5 باز میشه!
اینجا منظورش از n احتمالا هر عددیه! و خوب این با اون چیزی که من و شما فهمیدیم متناقضه!
اکثر سوالای یوساکو خیلی سخت فهمیده میشن :اشتباه:
منظورش از n عدد آخرمون هستش
چون که این دستگاه مثل یک دور 1 تا n هست پس رمز 1 و 2 با وارد کردن n باز میشن

sa1378
شنبه 17 آبان 1393, 14:22 عصر
-2 -1 1
-1 1 2
1 2 3
2 3 4
3 4 5
4 5 6
5 6 7
6 7 8
7 8 9

مثلا رمز 123 را در نظر بگیرید
اعداد 2- تا 3 در واقع محدوده 1 را تشکیل می دهند
اعداد 1- تا 4 محدوده 2 و
اعداد 1 تا 5 محدوده 3 را تشکیل می دهند
که هر کدومشون میشه 5 تا
5*5*5 میشه 125
برای 567 هم عدد 125 بدست میاد
125+125 میشه 250
حالا باید خانه هایی که بین دو تا رمز مشترک هستند را به دست بیاریم و از 250 کم کنیم
در ستون اول فقط یک عدد یعنی 3
در ستون دوم یک عدد به نام 4
در ستون سوم هم یک عدد به نام 5
1*1*1 میشه 1
1-250 میشه 249
حالا به جای 1- ما n را قرار می دهیم یعنی بیشترین عدد
حالا اگه خونه های مشترک بیشتر از یکی باشه پیچیده تر میشه
یه شرط هم باید برای اینکه n>4 هست بزاریم
ممنون بابت کمک