Bojan Kostadinov wrote:Направи го следното:
1. Замени го float со double.
2. Наместо директно кастирање од double во int после операции со реални броеви, користи EPS (види претходен коментар) или round
int price1=(int)round(old_price), M=nzs/round(old_price), ....
3. Иако ја имаш дефинирано променливата nzs да е од тип long long, сепак сите променливи од десната страна на = (операторот за доделување) се int, па и операциите од таа страна ќе се извршат како операции со int (потоа се врши претворање во long long). Дополнително, можеш НЗС(A,B)=A*B/НЗД(A,B), да го замениш со НЗС(A,B)=A*(B/НЗД(A,B)), бидејќи НЗД(A, B) го дели B. Или пак, можеш A*B/НЗД(A,B) да го пресметаш преку операции со реални броеви, а потоа само да го претвориш резултатот во цел број (доколку си сигурен дека прецизноста на double е доволна).
(Off-topic) Задачата може да се реши и без користење на long long и наоѓање на НЗС.
ова е точното решение на задачата