C++ please
1. (Financial: credit card number validation) Credit card numbers follow certain patterns. A credit card number must have between 13 and 16 digits. It must start with: 4 for Visa cards 5 for Master cards 37 for American Express cards 6 for Discover cards In 1954, Hans Luhn of IBM proposed an algorithm for validating credit card numbers. The algorithm is useful to determine whether a card number is entered correctly or whether a credit card is scanned correctly by a scanner. Credit card numbers are generated following this validity check, commonly known as the Luhn check or the Mod 10 check, which can be described as follows: a. Double every second digit from right to left. If doubling of a digit results in a two-digit number, add up the two digits to get a single-digit number b. Now add all single-digit numbers from Step a. c. Add all digits in the odd places from right to left in the card number d. Sum the results from Step b and Step c e. If the result from Step d is divisible by 10, the card number is valid; otherwise, it is invalid. For example, the number 4388576018402626 is invalid, but the number 4388576018410707 is valid. Write a program that prompts the user to enter a credit card number as a long integer Display whether the number is valid or invalid. Design your program to use the following methods // Return true if the card number is valid bool isvalid (const string& cardNumber) // Get the result from Step 2 int sumofDoubleEvenPlace (const string& cardNumber) // Return this number if it is a single digit, otherwise, /I return the sum of the two digits int getDigit (int number) // Return sum of odd-place digits in the card number int sumofoddPlace (const string& cardNumber) // Return true if substr is the prefix for cardNumber bool startswith(const string& cardNumber, const string& substr) Here are sample runs of the program: Enter a credit card number without any space: 4388576018410707 4388576018410707 is valid