Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- /*
- Feladat:
- Melyik az a legkisebb termeszetes szam, amelyiknek
- - első jegye 4 es
- - ha ezt a szamot a szam elejerol toroljuk es a szam vegere irjuk,
- akkor at eredeti szam negyedreszet kapjuk.
- __ __
- 4X == X4 * 4
- */
- int main(void)
- {
- // induljunk el 1-től, és amíg nincs találat keressük azt.
- long i = 1, j;
- char num[50]; // az írásbeli csere megejtéséhez
- // valószínűsíthető, hogy 5osztályosnak 49 jegyű
- // számnál nem kell nagyobbal számolnia
- size_t len;
- while (1)
- {
- memset(num, '\0', sizeof(num));
- sprintf(num, "%d", i);
- len = strlen(num);
- // 4essel kezdődik a szám?
- // kihagyható, de gyorsítja az algoritmust, és a csere is könnyebb
- if (num[0] == '4')
- {
- // az első 4-est a végére rakom: csúsztat és áthelyez?
- // eggyel elcsusztatja a szamjegeket
- int x;
- for (x = 0; x < len; x++)
- {
- num[x] = num[x+1];
- }
- // vegere 4est ir
- num[len - 1] = '4';
- // amennyiben biztosra akarunk menni, lezarjuk a stringet
- // num[len] = '\0'; // de mivel kinullaztuk, nem lehet gond
- // ascii-ból long integerrél alakítja a szamot
- j = atol(num);
- // Az új szám 4*szerese eggyezik az eredeti számmal?
- if (i == j * 4)
- {
- // ha a válasz igen, írassuk ki és hagyjuk abba a ciklust
- printf("%d == %d * 4\n", i,j);
- break;
- }
- }
- i++;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment