Регистрирайте се
| Предишната тема :: Следващата тема |
| Автор |
Съобщение |
c0nan Начинаещ
Регистриран на: 27 Oct 2007 Мнения: 12
 
|
Пуснато на: Sat Oct 27, 2007 3:12 pm Заглавие: елементарните задачи |
|
|
| здравейте хора , тепърва почвам с програмирането , дайте някакви елементарни задачи за да се упражнявам
|
|
| Върнете се в началото |
|
 |
Реклама
|
Пуснато на: Заглавие: Реклама |
|
|
|
|
|
| Върнете се в началото |
|
 |
Methuselah VIP

Регистриран на: 17 Feb 2007 Мнения: 1057 Местожителство: София
  гласове: 20
|
Пуснато на: Sat Oct 27, 2007 3:45 pm Заглавие: |
|
|
Напиши програма която по дадено n смята n-тия член на редицата на Фибоначи.
1,1,2,3,5,8,13....
|
|
| Върнете се в началото |
|
 |
Cool Angel Начинаещ

Регистриран на: 30 Sep 2007 Мнения: 36
      гласове: 1
|
Пуснато на: Sat Oct 27, 2007 7:57 pm Заглавие: |
|
|
| Напиши програма която при въведени от клавиатурата измерения на правоъгълник да извежда периметърът и лицето на дадения правоъгълник.
|
|
| Върнете се в началото |
|
 |
Irrefutable Напреднал

Регистриран на: 15 Jul 2007 Мнения: 298 Местожителство: София
    гласове: 5
|
Пуснато на: Sat Oct 27, 2007 8:51 pm Заглавие: |
|
|
c0nan, зависи колко си напред с математиката...
Задачата на Methuselah става за 3 нива на трудност.
-Рекурсия за начинаещи програмисти без идея от математика. С сложност О(е^N)
-Динамично програмиране за имащи известна програмистко-математическа мисъл. O(N)
-Разделяй и владей, за математиците. O(lgN)
|
|
| Върнете се в началото |
|
 |
r2d2 VIP

Регистриран на: 28 Feb 2007 Мнения: 1936 Местожителство: in the galaxy (Far Far Away)
   гласове: 179
|
Пуснато на: Sat Oct 27, 2007 10:42 pm Заглавие: |
|
|
Първото го разбрах.
От второто и третото разбрах само, че Irrefutable много разбира!
Като гледам и някой други постове, разбирам че много хора, мноо разбират.
Не разбирам, значи съществувам!
|
|
| Върнете се в началото |
|
 |
Grands Редовен
Регистриран на: 31 Mar 2007 Мнения: 240
    гласове: 5
|
Пуснато на: Sun Oct 28, 2007 11:43 am Заглавие: |
|
|
Irrefutable, ще съм ти благодарен ако предложиш алгоритми по твоите идеи.
И аз съм wanna be програмист.
|
|
| Върнете се в началото |
|
 |
c0nan Начинаещ
Регистриран на: 27 Oct 2007 Мнения: 12
 
|
Пуснато на: Sun Oct 28, 2007 12:05 pm Заглавие: |
|
|
"редицата на Фибоначи" , кво ще рече това ?? някой ще ми обясни ли ?? иначе много съм зле с математика , ся в университета учиме за редици ама нещо не схващам кой знае колко
А на Cool Angel задачата нали въвеждаме страните на правоъгълник и смята лице и периметър или пък има предвид нещо друго ??
|
|
| Върнете се в началото |
|
 |
v1rusman Напреднал

Регистриран на: 18 Jul 2007 Мнения: 318
     гласове: 10
|
Пуснато на: Sun Oct 28, 2007 12:14 pm Заглавие: |
|
|
Не,има предвид това,което ти си разбрал А за редицата на Фибоначи знам,че се определя,като всеки следващ член е сбор на предишнте два:
1,(вторият член е сбор от предишните два,но тъй като има само един предишен член=>)
1,(сборът на предишните два члена е 1+1=2)=>2,(2+1=3)=>3,5,8,13,21 и т.н.т
|
|
| Върнете се в началото |
|
 |
c0nan Начинаещ
Регистриран на: 27 Oct 2007 Мнения: 12
 
|
Пуснато на: Sun Oct 28, 2007 12:21 pm Заглавие: |
|
|
ахамм , интересно , ей после ще се опитвам да го напиша иначе програмата на Cool Angel сигурно ще е нещо такова :
| Код: |
import ccj.*;
public class prog1
{
public static void main(String arg[])
{
int x,y;
x = Console.in.readInt();
y = Console.in.readInt();
System.out.println("S=" + (x*y) + "\nP=" + (x+y)*2);
}
}
|
иначе некакви жокери ще давате ли , например какво да ползвам в програмата
|
|
| Върнете се в началото |
|
 |
Irrefutable Напреднал

Регистриран на: 15 Jul 2007 Мнения: 298 Местожителство: София
    гласове: 5
|
Пуснато на: Sun Oct 28, 2007 2:07 pm Заглавие: |
|
|
c0nan , да не си СУ -> Приложна математика. Гледам Java учиш. Може да се окаже че сме колеги. Или пък да си в статистика?
А за програмата с лицето на правоъгълника направи да се въвеждат координатите на 2 срещуположни точки. х1, х2, у1, у2.
След това направи програма за намирането на сечението между 2 правоъгълника.
Grands, идеите са следните. За динамичното е ясно, имаш две променливи а и б , и в темп промелива слагаш а+б , после в а слагаш б а в б слагаш темп; Повтаряш N пъти и готово.
Това е и най-добрия начин да се намерят всички фибоначи числа в някакъв интервал, понеже за всяко ново имаш сложност О(1).
Ако ти трябва еднократното намиране на Fib(1560) примерно, обаче няма нужда да намираш на всички предишни.
Идеята е следната. Имаш матрицата:
1 1
1 0
Вдигаш я на N-та степен, съответно A12 става равно на A21 и на фибуначи от N.
Вдигането на N-та степен е операция която чрез разделяй и владей може да се направи с сложност O(lonN). Като Х^n = { Х^n/2 * Х^n/2, ако Х е четно ; Х^(n-1) * X^(n-1)*х , ако Х е нечетно}
Умножението на матрица от втори ред отнема константно време. И така стигаш до желаната желаната сложност.
|
|
| Върнете се в началото |
|
 |
c0nan Начинаещ
Регистриран на: 27 Oct 2007 Мнения: 12
 
|
Пуснато на: Sun Oct 28, 2007 2:52 pm Заглавие: |
|
|
дам , в ПМ съм, аре ЛС
иначе това с редиците по твоят начин е много яко , аз бях тръгнал да го мисля някакв много сложен начин с 2 цикъла , едния за нарастване до n-тия ред , другия е за връщане на 2 стойности и след всяко връщане добавям към temp-a , ама надали ще стане така
| Код: |
import ccj.*;
public class prog1
{
public static void main(String arg[])
{
int a , b , i , n;
int temp;
a = 1;
b = 1;
n= Console.in.readInt();
for(i=1;i<n;i++)
{
temp = a + b;
a = b;
b = temp;
System.out.println(temp);
}
}
}
|
това с правоъгълници нещо не го разбрах , я обясни малко повече , какво да въвеждаме
|
|
| Върнете се в началото |
|
 |
Irrefutable Напреднал

Регистриран на: 15 Jul 2007 Мнения: 298 Местожителство: София
    гласове: 5
|
Пуснато на: Sun Oct 28, 2007 3:47 pm Заглавие: |
|
|
Целта е да намериш сечението между два правоъгълника. Тоест, координатите на новообразувания правоъгълник, лицето му и обиколката му.
Прави проверка дали У1 < У2 и Х1 < Х2 , защото никой не може да ти гарантира че на входа ще имаш верни данни. Много често на състезания по информатика хората пропускат да обърнат координатите. Тоест , на входа има винаги 2 координати по Х и 2 по У , без да се знае кой е ляв и кой десен и кой долен и кой горен.
| Description: |
|
| Големина на файла: |
3.96 KB |
| Видяна: |
7855 пъти(s) |

|
|
|
| Върнете се в началото |
|
 |
c0nan Начинаещ
Регистриран на: 27 Oct 2007 Мнения: 12
 
|
Пуснато на: Sun Oct 28, 2007 4:08 pm Заглавие: |
|
|
интересно , ще го пробвам довечера (ако не съм твърде пиян де ) , мерси за графиката
edited:
май ми хрумна решението , отна4ало въвеждаме 8 4исла х1 х2 х3 х4 , у1 у2 у3 у4 с условие 4е х1<x2 , x3<x4 , y1>y2 , y3>y4 , ако е изпълнено условие просто ще разгледаме случаи :
1 : х2<х3 => няма се4ение
2 : х1<х3 U х2<х4 => х= х2 - х3
U х2>х4 => х= х4 - х3
3 : х3<х1 U х2<х4 => х= х2 - х1
U x2>x4 => x= x4 - x1
Подобно разгледаме за у и ще получаваме у
и на-края лицето = х * у , Периметър = 2(х + у)
само съм го решил на лист де , още не съм я написал програма , ама нещо такова трябва да е нали
|
|
| Върнете се в началото |
|
 |
c0nan Начинаещ
Регистриран на: 27 Oct 2007 Мнения: 12
 
|
Пуснато на: Sat Dec 01, 2007 5:58 pm Заглавие: |
|
|
имам една задача за решаване , дайте обяснение че нещо не съм схванал смисъла , ето задачата:
Да се изведат всичките цели числа в интервал от А до Б, на които като се премахне К-тата цифра от ляво на дясно, намаляват цяло число пъти .
демек примерно числото : abc , като махаме к-тата цифра значи може да е a,b или c, ще намалява n пъти , n да е цяло число ?? така ли означава ? значи трябва първо начално да фиксираме к-тата цифра или ще провериме к-пъти като махаме всеки път едната цифра ??? програмата сам ще се опитвам да напиша , само ми разяснете малко условието
Irrefutable, ако четеш поста , хелп
edited : ех , и следващата задача също да ми разяснете :
За дадено ест ч-ло М с последна цифра различна от 0, да се изведат двойки числа А и Б, образувани от първите К-цифри и последните К-цифри на М , когато А и Б са делители на М .
според мене ако числото М = abcd , да се изведе двойките a и bcd , ab и cd , abc и d ако са делители на М , това ли означава ??
|
|
| Върнете се в началото |
|
 |
Irrefutable Напреднал

Регистриран на: 15 Jul 2007 Мнения: 298 Местожителство: София
    гласове: 5
|
Пуснато на: Sat Dec 01, 2007 9:40 pm Заглавие: |
|
|
Това ми прилича на задача от ФМИ , по УП , така или иначе съм дал решенията на колегите вече........
Задачата за която става дума е zad2_3
| Код: |
import java.io.*;
import java.util.*;
public class Zadachki {
public static void zad1(int x) { // deliteli
for (int i = 1; i <= x; i++) {
if (x % i == 0)
System.out.print(" " + i);
}
}
public static boolean zad2(int x) { // prime
for (int i = 2; i * i <= x; i++)
if (x % i == 0)
return true;
return false;
}
public static int zad3(int m, int n) { // gcd
return n != 0 ? zad3(n, m % n) : m;
}
public static int zad4(int[] X) { // gcd for N
int ret = X[0];
for (int i = 1; i < X.length; i++) {
ret = zad3(ret, X[i]);
}
return ret;
}
public static int zad5(int a, int b) { // lcm
return a * b / zad3(a, b);
}
public static int zad6(int[] X) { // lcm for N
int ret = X[0];
for (int i = 1; i < X.length; i++)
ret = zad5(ret, X[i]);
return ret;
}
public static boolean zad7(int a, int b) { // vzaimno prosti
return (zad3(a, b) == 1);
}
public static boolean zad8(int[] X) { // vzaimno prosti za K
int min = X[0], i, c;
for (i = 1; i < X.length; i++)
if (min < X[i])
min = X[i];
for (i = 2; i <= min; i++) {
boolean etd = true;
for (c = 0; c < X.length; c++) {
if (X[c] % i != 0)
etd = false;
}
if (etd)
return false;
}
return true;
}
public static int zad9(int A) { // obratnoto na 4islo
int ret = 0;
while (A > 0) {
ret = ret * 10 + A % 10;
A /= 10;
}
return ret;
}
public static boolean zad10(int A) { // dali 1 4islo e palindrom
return A == zad9(A);
}
public static int zad11(int A) { // broq na cifrite
if (A == 0)
return 1;
int count = 0;
while (A > 0) {
count++;
A /= 10;
}
return count;
}
public static boolean zad12(int A) { // shtastlivo 4islo
int k = zad11(A);
int sum = 0;
for (int i = 0; i < k / 2; i++) {
sum += A % 10;
A /= 10;
}
for (int i = 0; i < k / 2; i++) {
sum -= A % 10;
A /= 10;
}
return (sum == 0);
}
public static void zad13() { // savurshenno 4islo
for (int num = 6; num <= 10000; num++) {
int sum = 0;
for (int d = 1; d < num; d++)
if (num % d == 0)
sum += d;
if (sum == num)
System.out.print(" " + num);
}
}
public static void zad14() { // avtomorfno
for (int num = 1; num <= 10000; num++) {
int qu = num * num;
qu -= num;
int len = zad11(num);
boolean avton = true;
while (len-- > 0)
if (qu % 10 != 0) {
avton = false;
break;
}
if (avton)
System.out.print(" " + num);
}
}
public static int sumdel(int A) { // pomo6tna za zad15
int ret = 0;
for (int i = 1; i <= A; i++)
if (A % i == 0)
ret += i;
return ret;
}
public static void zad15(int A, int B) { // drujestveni
for (int X = A; X <= B; X++)
for (int Y = X + 1; Y <= B; Y++)
if (sumdel(A) == B && sumdel(B) == A)
System.out.print(A + "_" + B + " ");
}
public static int zad16() {// 4isloto M
return 142857;
}
public static void zad17(int M) { // M-Cifreni
int L = (int) Math.pow(10.0, M - 1), R = L * 10 - 1;
for (int n = L; n < R; n++) {
int sum = 0;
int t = n;
while (t > 0) {
sum += (int) Math.pow(t % 10, M);
t /= 10;
}
if (sum == n)
System.out.print(" " + n);
}
}
public static void main(String[] args) {
zad13();
}
}
|
| Код: | public class Zadachki_2 {
public static int reverse(int A) {
int ret = 0;
while (A > 0) {
ret = ret * 10 + A % 10;
A /= 10;
}
return ret;
}
public static boolean prime(int A) {
for (int i = 2; i * i <= A; i++)
if (A % i == 0)
return false;
return true;
}
public static int count(int A) {
int count = 0;
do {
count++;
A /= 10;
} while (A > 0);
return count;
}
public static void zad2_1() {
int num = 1, count = 0;
while (count < 20) {
int cnt = 0;
int tmp = num;
while (tmp > 0) {
cnt += tmp % 2 == 0 ? 1 : -1;
tmp /= 2;
}
if (cnt == 0) {
System.out.print(num + " ");
count++;
}
num++;
}
}
public static boolean zad2_2(int A) {
int B = reverse(A);
for (int num = 1; num < B; num++)
if (B % num == 0) {
if (prime(num) && A % num != 0)
return false;
}
return true;
}
public static void zad2_3(int A, int B, int K) {
for (int i = A; i <= B; i++) {
int tmp = i;
int num = 0, inx = count(i) - K;
while (tmp > 0) {
if (inx != 0)
num = num * 10 + tmp % 10;
inx--;
tmp /= 10;
}
num = reverse(num);
if (i % num == 0) {
System.out.print(i + "_" + num + " ");
}
}
}
public static void zad2_4(int M) {
if (M % 10 == 0)
return;
int L = count(M);
for (int K = 2; K < L; K++) {
int A = M / (int) Math.pow(10, L - K);
int B = M % (int) Math.pow(10, K);
if (M % A == 0 && M % B == 0) {
System.out.print(M + "->" + A + "_" + B + " ");
}
}
}
public static boolean prv(int x) {
for (int i = 2; i < x; i++) {
if (x % i == 0) {
x /= i;
if (x % i == 0)
return false;
}
}
return true;
}
public static void zad2_5() {
int count = 0;
for (int m = 1; count < 5; m++) {
if (!prv(m))
continue;
int br = 0;
for (int a = 1; a * a * a <= m; a++)
for (int b = a + 1; b * b * b <= m - a * a * a; b++)
if (b * b * b + a * a * a == m)
br++;
if (br >= 2) {
System.out.print(m + " ");
count++;
}
}
}
public static boolean zad2_6(int[] A) {
if (A.length == 0)
return false;
if (!prime(A[0]))
return false;
for (int i = 1; i < A.length; i++)
if (!prime(A[i]) || A[i] == A[i - 1])
return false;
return true;
}
public static boolean zad3_7(double[] A) {
if (A.length < 2)
return true;
double q = A[1] / A[0];
for (int i = 2; i < A.length; i++)
if (q != A[i] / A[i - 1])
return false;
return true;
}
public static double cosine(double angle) {
angle %= 360;
angle *= Math.PI / 180; // make angle in radians
double ret = 1, add = 1, k = 1;
do {
add *= -angle * angle / (k * (k + 1));
ret += add;
k += 2;
} while (Math.abs(add) > 0.0001);
return ret;
}
public static void zad_prakt_1(int n) {
int num = 2;
for (int p = 1; p <= n; p++) {
if (prime(num - 1))
System.out.print(p + " ");
num *= 2;
}
}
public static void main(String[] args) {
zad2_1();
System.out.println();
for (int i = 20; i < 50; i++)
if (zad2_2(i))
System.out.print(" " + i);
System.out.println();
zad2_3(100, 200, 2);
System.out.println();
for (int i = 7000; i < 13000; i++) {
zad2_4(i);
}
System.out.println();
zad2_5();
System.out.println();
int[] M = { 3, 7, 1, 13, 19, 37 };
if (zad2_6(M))
System.out.println("prosti sa i susednite sa razli4ni");
double[] A = { 0.25, -0.5, 1, -2, 4, -8, 16, -32 };
if (zad3_7(A))
System.out.println("geometri4na progresiq e");
System.out.println(cosine(0) + " " + cosine(210) + " " + cosine(60));
zad_prakt_1(30);
}
}
|
| Код: | public class cikli2_zad5 {
private static boolean prv(int x) {
for (int i = 2; i * i < x; i++)
if (x % i == 0) {
x /= i;
if (x % i == 0)
return false;
}
return true;
}
private static String delts(int x) {
String ret = "";
for (int i = 2; i * i < x; i++)
if (x % i == 0) {
if (ret.length() > 0)
ret += ".";
ret += i;
x /= i;
}
ret += "." + x;
return ret;
}
private static String pow3str(int x) {
return x + "." + x + "." + x;
}
public static void UP_cikli2_zad5_optimized() {
int mxt = 311;
int mxt3 = mxt * mxt * mxt;
short[] A = new short[mxt3];
for (int i = 0; i < A.length; i++)
A[i] = 0;
int[] pow3 = new int[mxt];
for (int i = 0; i < mxt; i++)
pow3[i] = i * i * i;
for (int a = 1; a < mxt; a++)
for (int b = a + 1; b < mxt && pow3[a] + pow3[b] < mxt3; b++)
A[pow3[a] + pow3[b]]++;
for (int i = 1; i < mxt3; i++)
if (A[i] >= 2)
if (prv(i)) {
System.out.print(i + " = " + delts(i));
for (int a = 1; a < mxt; a++)
for (int b = a + 1; b < mxt && pow3[a] + pow3[b] <= i; b++)
if (pow3[a] + pow3[b] == i)
System.out.print(" =" + pow3str(a) + "+"
+ pow3str(b));
System.out.println();
}
}
public static void main(String[] args) {
UP_cikli2_zad5_optimized();
}
}
|
|
|
| Върнете се в началото |
|
 |
c0nan Начинаещ
Регистриран на: 27 Oct 2007 Мнения: 12
 
|
Пуснато на: Sat Dec 01, 2007 10:56 pm Заглавие: |
|
|
10х , остават ми 2_3 до 2_5 да напиша , ама като гледам всички са тук , мерси много
|
|
| Върнете се в началото |
|
 |
c0nan Начинаещ
Регистриран на: 27 Oct 2007 Мнения: 12
 
|
Пуснато на: Sun Dec 02, 2007 12:14 pm Заглавие: |
|
|
zad2_3 ,която си написал май си пропуснал че ако числото завърши с 0 тогава 0-ата няма да се запазва в num , например ако i = 10200 и k = 3 ==> num = 1 , а трябва да е = 1000 , въвеждах една нова променлива n за запазване на 0-ите
| Код: |
public static void zad2_3(int A, int B, int K) {
for (int i = A; i <= B; i++) {
int tmp = i,n=0;
int num = 0, inx = count(i) - K;
while (tmp > 0) {
if (inx != 0) {
num = num * 10 + tmp % 10;
if(num==0) n++;
}
inx--;
tmp /= 10;
}
num = (int) ( reverse(num) * Math.pow(10,n) );
if (i % num == 0) {
System.out.print(i + "_" + num + " ");
}
}
}
|
|
|
| Върнете се в началото |
|
 |
Irrefutable Напреднал

Регистриран на: 15 Jul 2007 Мнения: 298 Местожителство: София
    гласове: 5
|
Пуснато на: Sun Dec 02, 2007 4:35 pm Заглавие: |
|
|
Да има нещо такова
Оправи си го елементарно е , ако псоедната цифра е 0 , правиш я на единица и после изваждаш 1-цата след деленията.
Работата е в тва че тези задачи никога не бих ги писал както съм ги писал. Тоест всичките се правят с стрингове и става по-бързо и с по-компактен код. Но трябваше да се съобразя до някаква степен с матеряла който сме взели.
|
|
| Върнете се в началото |
|
 |
c0nan Начинаещ
Регистриран на: 27 Oct 2007 Мнения: 12
 
|
Пуснато на: Sun Dec 02, 2007 4:56 pm Заглавие: |
|
|
е , оправих си го , виж горния код , въвеждах n, всеки път ако num = 0 n се увеличава с 1 и накрая умножих inverse(num) с 10 на степен n ;
да , вярно е ,не сме взели кои знае колко много от материала .
иначе тук си ползвал нещо :
каква е тази библиотека : java.util.*;
а и този ред кво означава ? , от zad2_1 : cnt += tmp % 2 == 0 ? 1 : -1;
|
|
| Върнете се в началото |
|
 |
martosss VIP Gold

Регистриран на: 17 Mar 2007 Мнения: 3937 Местожителство: Somewhere over the rainbow
   гласове: 213
|
Пуснато на: Sun Dec 02, 2007 5:53 pm Заглавие: |
|
|
ето решението на Фибоначи което учим в училище, от вашите постове не видях да е решено по този начин, така че ще го реша както си знам
| Код: | #include<iostream.h>
int main()
{
unsigned int n, a=0 ,b=0 ,c=1;
cout<<"n=";
cin>>n;
for(int i=1;i<=n;i++)
{
a=b;
b=c; //по този начин въртя редицата от числа...
c=a+b; // ако го проиграете със някакви стойности ще видите как бачка ;)
}
cout<<c;
return 0;
} |
на мен си ми бачка я кажете дали става?
|
|
| Върнете се в началото |
|
 |
c0nan Начинаещ
Регистриран на: 27 Oct 2007 Мнения: 12
 
|
Пуснато на: Sun Dec 02, 2007 6:19 pm Заглавие: |
|
|
| да , става , ама няма разлика м/у този код и онзи ,който съм писал горе , освен че почваш редицата от 1 (като задаваш 1 за с ) а аз от 2 (а=b=1, с = а+b =2) ,иначе алгоритъма е един и същ
|
|
| Върнете се в началото |
|
 |
Irrefutable Напреднал

Регистриран на: 15 Jul 2007 Мнения: 298 Местожителство: София
    гласове: 5
|
Пуснато на: Sun Dec 02, 2007 7:41 pm Заглавие: |
|
|
Аз за фибоначи бих написал по-скоро нещо такова:
| Код: | #include <iostream>
#include <vector>
using std::vector;
using std::cout;
using std::endl;
// Class Matrix is a small class implementing square matrices
// it defines multiplication (operator*) and integer
// power (operator^).
template<class T>
class Matrix {
private:
vector<vector<T> > data;
public:
Matrix(int size) : data(vector<vector<T> >(size,vector<T>(size,0))) {}
size_t size(void) const { return data.size(); }
vector<T> & operator[] (int i) { return data[i]; }
const vector<T> & operator[] (int i) const { return data[i]; }
const Matrix operator*(const Matrix& b) const {
Matrix c(data.size());
for(unsigned int i=0; i<data.size(); i++)
for(unsigned int j=0; j<data.size(); j++)
for(unsigned int k=0; k<data.size(); k++)
c[i][j]+=data[i][k]*b[k][j];
return c;
}
const Matrix operator^(const int n) const {
if(n>1) {
Matrix a=*this^(n/2);
return (n%2) ? a*a**this : a*a;
} else return *this;
}
};
// Function f returns n'th Fibonacci number
// It uses ALGORITHM 3A: MATRIX EQUATION
unsigned int f(int x) {
Matrix<unsigned int> a(2);
a[0][0]=a[0][1]=a[1][0]=1; a[1][1]=0;
return (a^x)[0][0];
}
// Function f_print prints out n'th Fibonacci number
void f_print(int n) {
cout << n << "th Fibonacci number is " << f(n) << endl;
}
// main is the entry point in C++
int main() {
f_print(46);
return 0;
}
|
Кода е от http://cubbi.com/fibonacci/c++.html
|
|
| Върнете се в началото |
|
 |
Irrefutable Напреднал

Регистриран на: 15 Jul 2007 Мнения: 298 Местожителство: София
    гласове: 5
|
Пуснато на: Sun Dec 02, 2007 7:46 pm Заглавие: |
|
|
| c0nan написа: | каква е тази библиотека : java.util.*;
а и този ред кво означава ? , от zad2_1 : cnt += tmp % 2 == 0 ? 1 : -1; |
Във util се намира Scanner , а него го ползвам за парсване на входа
cnt += tmp % 2 == 0 ? 1 : -1;
е равносилно на
| Код: | if (tmp%2 == 0)
cnt = cnt + 1;
else
cnt = cnt - 1; |
|
|
| Върнете се в началото |
|
 |
c0nan Начинаещ
Регистриран на: 27 Oct 2007 Мнения: 12
 
|
Пуснато на: Sun Dec 02, 2007 8:00 pm Заглавие: |
|
|
ахам ,тва е много яко , 10х
|
|
| Върнете се в началото |
|
 |
|
|
Не Можете да пускате нови теми Не Можете да отговаряте на темите Не Можете да променяте съобщенията си Не Можете да изтривате съобщенията си Не Можете да гласувате в анкети Може да прикачвате файлове Може да сваляте файлове от този форум
|
|