Оригинал взят уvitya_prujinkinв Узнай свой номер телефона по калькулятору!
Эх, люблю я такие штуки. Чему бы жизнь нас не учила, Сердце верит в чудеса…
Оригинал взят уdenis_balinв Узнай свой номер телефона по калькулятору!
Не знаю, что за прикол, точнее где-то уже встречал в инете, ног смысл не ясен. Всё проделать на своем номере телефона, действительно работает. Только вот зачем?
1. Берём калькулятор
2. Вводим 3 первые цифры вашего номера телефона (без всяких кодов и т.п.)
3. Умножаем на 80
4. Прибавляем 1
5. Умножаем на 250
6. Прибавляем 4 последние цифры вашего номера телефона
7. Прибавляем 4 последние цифры вашего номера телефона ещё раз
8. Отнимаем 250
9. Делим на 2
10.Офигеваем
А все довольно просто.
Обозначим номер телефона цифрами
a6 a5 a4 a3 a2 a1 a0
Если рассматривать эти цифры как разряды соответствующего десятичного числа , то такое число будет иметь вид
a6 106 + a5 105 + a4 104 + a3 103 + a2 102 + a1 10 +a0
Запишем теперь в виде формулы действия по пунктам 2-9, получаем:
{[(a6 103 + a5 102 + a4 10) 80 + 1] 250 + ( a3 103 + a2 102 + a1 10 +a0 )+ ( a3 103 + a2 102 + a1 10 + a0 ) — 250} /2
После раскрытия скобок сразу получаем искомое десятичное число
a6 106 + a5 105 + a4 104 + a3 103 + a2 102 + a1 10 +a0
Кстати, пункты 4 и 8 взаимно уничтожают друг друга, их можно было бы не делать. Если в пункте 3 вместо 80 умножить на 40, то пункты 7 и 9 тоже становятся не нужными. Если процедуру таким образом упростить, разгадка становится ясной уже без всяких формул.
Improve Article
Save Article
Improve Article
Save Article
Given eight digits of a phone number as an integer N, the task is to find the missing last two digits and print the complete number when the last two digits are the sum of given eight digits.
Examples:
Input: N = 98765432
Output: 9876543244
Input: N = 10000000
Output: 1000000001
Approach:
- Get the eight digits of the phone number from N one by one using the Modulo 10 operator (%10).
- Add these digits in a variable say sum to get the sum of the eight digits.
- Now, there are two cases:
- If sum < 10 then it is a single digit i.e. insert 0 in the beginning to make it a two digit number without affecting the value.
- Else sum is the number represented by the last two digits.
Below is the implementation of the above approach:
C++
#include <iostream>
using
namespace
std;
void
findPhoneNumber(
int
n)
{
int
temp = n;
int
sum;
while
(temp != 0) {
sum += temp % 10;
temp = temp / 10;
}
if
(sum < 10)
cout << n <<
"0"
<< sum;
else
cout << n << sum;
}
int
main()
{
long
int
n = 98765432;
findPhoneNumber(n);
return
0;
}
Java
class
GFG
{
static
void
findPhoneNumber(
int
n)
{
int
temp = n;
int
sum =
0
;
while
(temp !=
0
)
{
sum += temp %
10
;
temp = temp /
10
;
}
if
(sum <
10
)
System.out.print(n +
"0"
+ sum);
else
System.out.print(n +
""
+ sum);
}
public
static
void
main(String[] args)
{
int
n =
98765432
;
findPhoneNumber(n);
}
}
Python 3
def
findPhoneNumber(n):
temp
=
n
sum
=
0
while
(temp !
=
0
):
sum
+
=
temp
%
10
temp
=
temp
/
/
10
if
(
sum
<
10
):
print
(n,
"0"
,
sum
)
else
:
n
=
str
(n)
sum
=
str
(
sum
)
n
+
=
sum
print
(n)
if
__name__
=
=
'__main__'
:
n
=
98765432
findPhoneNumber(n)
C#
using
System;
class
GFG
{
static
void
findPhoneNumber(
int
n)
{
int
temp = n;
int
sum = 0;
while
(temp != 0)
{
sum += temp % 10;
temp = temp / 10;
}
if
(sum < 10)
Console.Write(n +
"0"
+ sum);
else
Console.Write(n +
""
+ sum);
}
static
public
void
Main ()
{
int
n = 98765432;
findPhoneNumber(n);
}
}
Javascript
<script>
function
findPhoneNumber(n)
{
let temp = n;
let sum=0;
while
(temp != 0) {
sum += temp % 10;
temp = Math.floor(temp / 10);
}
if
(sum < 10)
document.write(n +
"0"
+ sum);
else
document.write(n +
""
+ sum);
}
let n = 98765432;
findPhoneNumber(n);
</script>
Time Complexity: O(log10n)
Auxiliary Space: O(1)
Improve Article
Save Article
Improve Article
Save Article
Given eight digits of a phone number as an integer N, the task is to find the missing last two digits and print the complete number when the last two digits are the sum of given eight digits.
Examples:
Input: N = 98765432
Output: 9876543244
Input: N = 10000000
Output: 1000000001
Approach:
- Get the eight digits of the phone number from N one by one using the Modulo 10 operator (%10).
- Add these digits in a variable say sum to get the sum of the eight digits.
- Now, there are two cases:
- If sum < 10 then it is a single digit i.e. insert 0 in the beginning to make it a two digit number without affecting the value.
- Else sum is the number represented by the last two digits.
Below is the implementation of the above approach:
C++
#include <iostream>
using
namespace
std;
void
findPhoneNumber(
int
n)
{
int
temp = n;
int
sum;
while
(temp != 0) {
sum += temp % 10;
temp = temp / 10;
}
if
(sum < 10)
cout << n <<
"0"
<< sum;
else
cout << n << sum;
}
int
main()
{
long
int
n = 98765432;
findPhoneNumber(n);
return
0;
}
Java
class
GFG
{
static
void
findPhoneNumber(
int
n)
{
int
temp = n;
int
sum =
0
;
while
(temp !=
0
)
{
sum += temp %
10
;
temp = temp /
10
;
}
if
(sum <
10
)
System.out.print(n +
"0"
+ sum);
else
System.out.print(n +
""
+ sum);
}
public
static
void
main(String[] args)
{
int
n =
98765432
;
findPhoneNumber(n);
}
}
Python 3
def
findPhoneNumber(n):
temp
=
n
sum
=
0
while
(temp !
=
0
):
sum
+
=
temp
%
10
temp
=
temp
/
/
10
if
(
sum
<
10
):
print
(n,
"0"
,
sum
)
else
:
n
=
str
(n)
sum
=
str
(
sum
)
n
+
=
sum
print
(n)
if
__name__
=
=
'__main__'
:
n
=
98765432
findPhoneNumber(n)
C#
using
System;
class
GFG
{
static
void
findPhoneNumber(
int
n)
{
int
temp = n;
int
sum = 0;
while
(temp != 0)
{
sum += temp % 10;
temp = temp / 10;
}
if
(sum < 10)
Console.Write(n +
"0"
+ sum);
else
Console.Write(n +
""
+ sum);
}
static
public
void
Main ()
{
int
n = 98765432;
findPhoneNumber(n);
}
}
Javascript
<script>
function
findPhoneNumber(n)
{
let temp = n;
let sum=0;
while
(temp != 0) {
sum += temp % 10;
temp = Math.floor(temp / 10);
}
if
(sum < 10)
document.write(n +
"0"
+ sum);
else
document.write(n +
""
+ sum);
}
let n = 98765432;
findPhoneNumber(n);
</script>
Time Complexity: O(log10n)
Auxiliary Space: O(1)