#include #include #include #include int a1, N, Q; std::vector sequence; std::vector row; std::vector wantedDigits; std::vector wantedNumbers; void sumRow(); void swap(int& a, int& b); int findDigit(int digit, int number); int sumThings(int a, int b); int main() { freopen("sequence.in", "r", stdin); freopen("sequence.out", "w", stdout); scanf("%d ", &a1); scanf("%d ", &N); sequence.push_back(a1); int currentElement; for(int i= 0; i < N; i++) { scanf("%d", ¤tElement); sequence.push_back(currentElement); } scanf("%d ", &Q); int iDigit, jNumber; for(int i = 0; i < Q; i++) { scanf("%d %d", &iDigit, &jNumber); wantedDigits.push_back(iDigit); wantedNumbers.push_back(jNumber); } // find the numbers; sumRow(); for(int i = 0; i < sequence.size(); i++) { printf("%d ", sequence[i]); } // now to find the answers for(int i = 0; i < Q; i++) { //find the iDigit; iDigit = wantedDigits[i]; jNumber = wantedNumbers[i]; printf("Digit %d of %d is : %d \n",iDigit, sequence[jNumber], findDigit(iDigit, sequence[jNumber])); // swap first Number with jNumber swap(sequence[0], sequence[jNumber]); } return 0; } void swap(int& a, int& b) { int temp = a; a = b; b = temp; } int findDigit(int digit, int number) { std::vector digits; int currentDigit = 0; for(; number > 0; number /= 10) { digits.push_back(number % 10); if(digits.size() == digit) return digits[digit-1]; } } void sumRow() { for(int i = 1; i <= N; i++) { int b = sequence[i-1] % (int)pow(10, N+1); sequence[i] = sumThings(sequence[i -1], b); } } int sumThings(int a,int b) { std::vector aDigits; std::vector bDigits; for(; a > 0; a/=10) { aDigits.push_back(a % 10); } for(; b > 0; b/=10) { bDigits.push_back(b % 10); } // sum them std::vector result; while(aDigits.size() > 0 || bDigits.size() > 0) { int digitsSum = 0; if(aDigits.size() > 0) { int aDigit = aDigits.back(); aDigits.pop_back(); digitsSum = aDigit; } if(bDigits.size() > 0) { int bDigit = bDigits.back(); bDigits.pop_back(); digitsSum += bDigit; if(digitsSum >= 0) digitsSum = digitsSum % 10; } result.push_back(digitsSum); } // form the new number int finalSum = 0; for(int i = 0; i < result.size(); i++) { finalSum += result[i] * pow(10, result.size() -1 - i); } return finalSum; }