Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- double PrzedzialPierwszy(double &zarobki, int przedzial);
- double PrzedzialDrogi(double &zarobki, int przedzial);
- double PrzedzialTrzeci(double &zarobki, int przedzial);
- double PrzedzialCzwarty(double &zarobki, int przedzial);
- double Oblicz(double &zarobki)
- {
- if(zarobki<=10000)
- return 0;
- if((zarobki>10000)&&(zarobki<=100000))
- return PrzedzialPierwszy(zarobki, 1);
- if((zarobki>100000)&&(zarobki<=1000000))
- return PrzedzialPierwszy(zarobki, 2) + PrzedzialDrogi(zarobki, 1);
- if((zarobki>1000000)&&(zarobki<=10000000))
- return PrzedzialPierwszy(zarobki, 2) + PrzedzialDrogi(zarobki, 2) + PrzedzialTrzeci(zarobki, 1);
- if(zarobki>10000000)
- return PrzedzialPierwszy(zarobki, 2) + PrzedzialDrogi(zarobki, 2) + PrzedzialTrzeci(zarobki, 2) + PrzedzialCzwarty(zarobki, 1);
- return 0;
- }
- double Brutto(double &zarobki)
- {
- if(Oblicz(zarobki)==0)
- return(zarobki);
- double poczatek, koniec, srodek, pom;
- bool znaleziono;
- poczatek = zarobki;
- koniec = zarobki*2;
- znaleziono = false;
- do
- {
- srodek = (poczatek+koniec)/2;
- pom = srodek-Oblicz(srodek);
- if(pom == zarobki)
- znaleziono = true;
- else
- {
- if(srodek-Oblicz(srodek)>zarobki)
- koniec = srodek-1;
- else
- poczatek = srodek+1;
- }
- }while(znaleziono==false);
- return srodek;
- }
- int main()
- {
- int i;
- int ilePracownikow;
- double zarobkiBrutto;
- double zarobkiNetto;
- scanf("%d", &ilePracownikow);
- for(i=0; i<ilePracownikow; i++)
- {
- scanf("%lf", &zarobkiNetto);
- zarobkiBrutto = Brutto(zarobkiNetto);
- printf("%lf\n", zarobkiBrutto);
- }
- }
- double PrzedzialPierwszy(double &zarobki, int przedzial)
- {
- double podatek;
- double x;
- x = zarobki-10000;
- if(przedzial==2)
- x = 90000;
- podatek = log(x);
- if(0 > podatek) podatek = 0;
- podatek += pow(x,1.0/2);
- if(x < podatek) podatek = x;
- return podatek;
- }
- double PrzedzialDrogi(double &zarobki, int przedzial)
- {
- double podatek;
- double x;
- x = zarobki - 100000;
- if(przedzial==2)
- x = 900000;
- podatek = (2*pow(x,1.0/3)) + (x/10);
- return podatek;
- }
- double PrzedzialTrzeci(double &zarobki, int przedzial)
- {
- double podatek;
- double x;
- x = zarobki - 1000000;
- if(przedzial==2)
- x = 9000000;
- podatek = x*(x*x+5000);
- podatek = log(podatek);
- if(podatek < 0) podatek = 0;
- podatek += x/2;
- return podatek;
- }
- double PrzedzialCzwarty(double &zarobki, int przedzial)
- {
- double podatek;
- double x;
- x = zarobki - 10000000;
- podatek = x/7 + pow(x, 1.0/4);
- return podatek;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement