Mündəricat
Problem bəyanat
Bu problemdə rəqəmlərin məhsulu ilə verilmiş rəqəmlərin cəmi arasındakı fərqi tapmaq lazımdır müsbət tam.
misal
1234
14
Izahat: Məhsul = 4 * 3 * 2 * 1 = 24 və Cəmi = 4 + 3 + 2 + 1 = 10. Beləliklə, fərq 14-dür
2045
-11
Izahat: Məhsul = 2 * 0 * 4 * 5 = 0 və Cəmi = 2 + 0 + 4 + 5 = 11. Beləliklə, fərq -11-dir.
Yanaşma
Rəqəmləri tam ədədən bir-bir çıxara bilsək, istənilən nəticəni qaytarmaq asan olur. Bunu '%' operatorundan istifadə etməklə asanlıqla etmək olar, çünki "% 10" bizə bir ədədin son rəqəmini gətirir, sonra son rəqəmi çıxarmaq üçün tam ədədi 10-a bölə bilərik (etdiyimiz kimi bu problem). Bu şəkildə hər rəqəmi işləyə və məhsulu və cəmi tapa bilərik. Sonra lazımi nəticəni əldə etmək üçün aralarındakı fərqi qaytara bilərik.
Alqoritm
- İki dəyişən başladın, məhsul = 1 və məbləğ Məhsulu və tam ədədin cəmini saxlamaq üçün = 0 N müvafiq
- Qədər bu addımları izləyin N> 0:
- N-in son rəqəmini vurun məhsul, məhsul * = N% 10
- N-in son rəqəmini əlavə edin məbləğ, cəmi + = N% 10
- bölmək N son rəqəmi 10-a endirmək üçün, N / = 10
- Qayıtmaq məhsul - cəmi
Tam bir Leetcode həllinin məhsulunu çıxarmaq və ədədi cəmi çıxarmaq
C ++ Proqramı
#include <bits/stdc++.h> using namespace std; int subtractProductAndSum(int n) { int product = 1 , sum = 0; while(n > 0) { //n % 10 extracts the last digit out of N product *= (n % 10); sum += (n % 10); n /= 10; } return product - sum; } int main() { int n = 1234; cout << subtractProductAndSum(n) << '\n'; return 0; }
Java Proqramı
class subtract_product_and_sum { public static void main(String args[]) { int n = 1234; System.out.println(subtractProductAndSum(n)); } static int subtractProductAndSum(int n) { int product = 1 , sum = 0; while(n > 0) { //n % 10 extracts the last digit out of N product *= (n % 10); sum += (n % 10); n /= 10; } return product - sum; } }
14
Bütünlük Leetcode həllinin məhsulunu çıxarmaq və ədədi cəminin karmaşıklığının təhlili
Zamanın mürəkkəbliyi
O (giriş2â € <N) tam bir N hər rəqəmi üçün döngə etdiyimiz kimi.
Kosmik Mürəkkəblik
O (1) daimi yaddaş məkanından istifadə etdiyimiz üçün.