CPPDeveloper
یک شنبه 19 دی 1389, 17:27 عصر
سلام..
من به یک سوالی برخوردم و حل کردم،اما به جواب درست نرسیدم ( با توجه به جوابی که از قبل مشخص هست. )
و دقیقا نمی دانم مشکل کجاست..
The following iterative sequence is defined for the set of positive integers:
n http://projecteuler.net/images/symbol_maps.gif n/2 (n is even)
n http://projecteuler.net/images/symbol_maps.gif 3n + 1 (n is odd)
Using the rule above and starting with 13, we generate the following sequence:
1 << 2 << 4 << 8 << 16 << 5 << 10 << 20 << 40 << 13
It can be seen that this sequence (starting at 13 and finishing at 1) contains 10 terms. Although it has not been proved yet (Collatz Problem), it is thought that all starting numbers finish at 1.
Which starting number, under one million, produces the longest chain?
NOTE: Once the chain starts the terms are allowed to go above one million.
در این سوال اگر عدد زوج بود تقسم بر دو می شود و اگر فرد بود ضرب در 3 و به علاوه 1 . و دوباره شرط بررسی می شود تا زمانی که به عدد یک برسیم..
هدف پیدا کردن عددی زیر یک میلیون که بزرگترین رشته را تولید کند.
من به عدد 910107 رسیدم با طول رشته 476. اما گویا جواب درست نیست!
int chain(int number,int& length)
{
length++;
int temp;
if (number<=1)
return 1;
else
{
if (number%2==0)
temp=chain(number/2,length);
else
temp=chain((3*number)+1,length);
}
return temp;
}
void problem14()
{
int length=0;
int max_length=length;
int max_length_number;
for (int i=999999; i>0; i--)
{
length=0;
chain(i,length);
cout<<i<<endl;
if (max_length<length)
{
max_length_number=i;
max_length=length;
}
}
cout<<"\nMax length number is: "<<max_length_number<<" Contains: "<<max_length<<" terms"<<endl;;
system("pause");
return;
}
با تشکر
من به یک سوالی برخوردم و حل کردم،اما به جواب درست نرسیدم ( با توجه به جوابی که از قبل مشخص هست. )
و دقیقا نمی دانم مشکل کجاست..
The following iterative sequence is defined for the set of positive integers:
n http://projecteuler.net/images/symbol_maps.gif n/2 (n is even)
n http://projecteuler.net/images/symbol_maps.gif 3n + 1 (n is odd)
Using the rule above and starting with 13, we generate the following sequence:
1 << 2 << 4 << 8 << 16 << 5 << 10 << 20 << 40 << 13
It can be seen that this sequence (starting at 13 and finishing at 1) contains 10 terms. Although it has not been proved yet (Collatz Problem), it is thought that all starting numbers finish at 1.
Which starting number, under one million, produces the longest chain?
NOTE: Once the chain starts the terms are allowed to go above one million.
در این سوال اگر عدد زوج بود تقسم بر دو می شود و اگر فرد بود ضرب در 3 و به علاوه 1 . و دوباره شرط بررسی می شود تا زمانی که به عدد یک برسیم..
هدف پیدا کردن عددی زیر یک میلیون که بزرگترین رشته را تولید کند.
من به عدد 910107 رسیدم با طول رشته 476. اما گویا جواب درست نیست!
int chain(int number,int& length)
{
length++;
int temp;
if (number<=1)
return 1;
else
{
if (number%2==0)
temp=chain(number/2,length);
else
temp=chain((3*number)+1,length);
}
return temp;
}
void problem14()
{
int length=0;
int max_length=length;
int max_length_number;
for (int i=999999; i>0; i--)
{
length=0;
chain(i,length);
cout<<i<<endl;
if (max_length<length)
{
max_length_number=i;
max_length=length;
}
}
cout<<"\nMax length number is: "<<max_length_number<<" Contains: "<<max_length<<" terms"<<endl;;
system("pause");
return;
}
با تشکر