մի հատ սենց փորձի
վերցրել եմ ստեղիցcout << fixed << endl;
cout << result << endl;
http://cplus.about.com/od/learning1/ss/clessontwo_4.htm
մի հատ սենց փորձի
վերցրել եմ ստեղիցcout << fixed << endl;
cout << result << endl;
http://cplus.about.com/od/learning1/ss/clessontwo_4.htm
էտ ձև սկի 50-ինն էլ չի հաշվում
Նման խնդիր վիժոն.ամ ֆորումում էի տեսել: Էնտեղի գրածս կոպի-փաստ եմ անում:![]()
Իմ տարբերակն էր։
Դատապարտյալներն ընտրում են մեկին, ասենք Արսենին և գործում հետևյալ սխեմայով։
Բոլորը, բացի Արսենից, առաջին անգամ լույսը վառած տեսնելով անջատում են, հակառակ դեպքում ոչինչ չեն անում։
Արսենը սենյակ մտնելիս անջատած լույսը վառում է և հաշվում, թե քանի անգամ վառեց։ Սակայն այս սխեմայով Արսենն առաջին անգամ սենյակ մտնելիս լույսն անջատած գտնելու դեպքում չեր կարող իմանալ լույսն անջատել են՞, թե անջատած է եղել սկզբից՞, և կարող էր հաշվել մինչև n-1 կամ n-2 (n–ը դատապ. թիվը)։
Բայց, այ եթե բացի Արսենից բոլորը սենյակ մտնելիս առաջին երկու անգամ վառած լույս տեսնելիս անջատեն, Արսենը 2(n-1)-1 հաշվելիս արդեն կարող է ասել, որ բոլորը հաստատ եղել են սենյակում (գուցէ նաև բոլորը 2 անգամ), և այս դեպքում լամպի սկզբնական վիճակը կարևոր չի։ Ոնց որ թե այսքանը։
cout << fixed << endl; -ով չի լինում
Cyber (18.10.2009)
Այո ստացվեց
Մերսի
Եթե պետք է մեծ թվեր հաշվել, օգտագործիր 64 բիթանոց փոփոխական, այսինքն long long տիպը: double-ը ևս 64 բիթ է, բայց ամբողջ թվերով հանրահաշվական գործողություն անելիս ցանկալի չէ օգտագործել:
Կոդ:#include <iostream> using namespace std; int main() { unsigned long long res = 1; unsigned long long n; cin>>n; for (int i = 2; i<=n; i++) res*=i; cout<<res<<endl; return 0; }
Այս խնդիրը ես վերցրել եմ habrahabr.ru կայքից մի քանի ամիս առաջ:
Ընդհանուր առմամբ քո մոտեցումը ճիշտ է, բայց վերջին մասը այդքան օպտիմալ չի: Քո նշած խնդրից ազատվելու համար, հաշվիչ նշանակում ենք ոչ թե Արսենին, այլ այն բանտարկյալին, ում կանչում են առաջին օրը: Առաջինը մտնելով միացնում է լամպը: Մնացածը քո գրածով: Մնաց ծրագիրը, որպեսզի գնահատվի ժամանակը![]()
Ինձ հանդիպած դեպքում, կարծեմ, բանտարկյալներին տալիս էին ժամանակ պայմանավորվոլու համար, որից հետո տանում էին տարբեր խցեր ու նրանք չէին իմանում, թե ում երբ են կանչում, համ էլ ոնց-որ օրեկան քանի հոգու ուզեին կկանչեին: Մի խոսքով առաջին գնացողը չէր կարող իմանալ, որ ինքն առաջինն է:
Դե ժամանակն էլ...ժամանակ չունեմ, թող ուրիշն ասի, համ էլ ծրագիրը պարտադիր չի գնահատելու համար:
d4rkme551ah (18.10.2009)
Ճիշտ է, պարտադիր չի, բայց մաթեմատիկորեն գնահատելը իմ կարծիքով շատ բարդ է այս դեպքում, համենայն դեպս ես չկարողացա: Ծրագրով շատ ավելի հեշտ է և արագ: Նույնիսկ առաջին ատոմային ռումբի համար հաշվարկներ կատարելիս, աշխատանքը արագացնելու համար անալիտիկորեն լուծվող խնդիրները լուծել են թվային մեթոդներով![]()
long long -ով չի լինում ( Microsoft Visual Studio 6.0 ) , գրում ա
--------------------Configuration: Factorial v2 - Win32 Debug--------------------
Compiling...
C1.CPP
e:\hrant\vb & c++\c ++\console\factorial v2\c1.cpp(10) : error C2632: 'long' followed by 'long' is illegal
Error executing cl.exe.
Factorial v2.exe - 1 error(s), 0 warning(s)
Կարելի է օգտագործել __int64 տիպը ( Microsoft Visual Studio 2008 )
Բայց ամենալավ արդյունքը ( առանց հատուկ կլասներ կազմելու ) կստացվի այս դեպքում
Կոդ:#include<iostream.h> #include<cstdlib> #include<stdio.h> // Hashvum a tveri factorial@ ( minchev 170 ) int main () { unsigned short n ; double result = 1 ; cout << "Mutqagreq inch vor tiv , vor stanaq ayd tvi factorial@" << endl << endl; cin >> n ; cout << endl; for ( short i=1;i <= n;i++) result*=i; printf("Aha ayd tvi factorial@ ____ "); printf ("%f",result); cout << endl << endl; system("pause"); return 0; }
Ժող մի հատ ծրագիր եմ գրում, մեջը պետք ա կոնկրետ connection-ի ստատիստիկան: Ասենք Local Area Connection-ից մի վարկյանում 80 kb/s բեռնվեց, հաջորդ վարկյանում 65 kb/s, … Էտ ծրագրային ոնց կարելի ա իրականացնել?
Մարդը լինելը լավ բան ա, բայց երկու ոտքի վրա կանգելը դեռ չի նշանակում որ դու մարդ ես:
Ամենակարևորը էս կյանքում մարդ լինելն ա, մնացած ամենինչը երկրորդական ա:
ԷԼ ԿՅԱՆՔՈՒՄ ԷՍ ՖՈՐՈՒՄԸ ՉԵՄ ՄՏՆԵԼՈՒ
Էդ ձևով կստանաք
բայց իրականում պիտի լիներ72574156153079940000...000Վերևում արդեն գրել էի, որ ճշտության մեջ կորուստ կա, այսինքն իմաստ ունեցող նիշերի քանակը բավարար չի: Իսկ եթե ուզում եք ճիշտ հաշվել, պիտի օգտագործեք ամբողջ թվեր:72574156153079989673967282111292631147169916812964513765435777989005618434017061578523507492426174595114909912378385207766660225654427530253 28900773207510902400430280058295603966612599658257104398558294257568966313439612262571094946806711205568880457193340212661452800000000000000 000000000000000000000000000
Այս պահին թեմայում են 1 հոգի. (0 անդամ և 1 հյուր)
Էջանիշներ