2005 - 简单的计算题
喵呜的数学差到简直让人难以忍受的地步……10以上的数字都不懂,遇到数字直接mod 9……
结果悲催的遇到了个数学题,其实,找不到人抄答案有时候是很蛋疼的,题目是这样的:给个n,求Count(n),求法如下:
首先给出集合S={1,2,3,…,k},k为n的位数,之后求出S的子集。假设子集为{a1,a2,…,at},则删去第a1,a2,…,at位,之后剩下的数字拼起来可以组成一个数字,则对于S的2^n子集都做如上的事情,得出2^n数字,将这些数字加起来的结果就是Count(n).
但是由于喵呜遇到数字直接就mod 9了,所以请输出Count(n)%9的值,让他抄~
举个例子,假设n=123,则Count(n)=123+12+23+13+1+2+3+0=177,之后mod9得到6,则输出6.
Input
一个数n,n的位数<=50
Output
每个测试数据输出一个数Count(n)%9,每个测试数据占一行。
Examples
Input
123 8
Output
6 8
Solution C++
#include <bits/stdc++.h> using namespace std; int main() { string s; while (cin >> s) { int sum = 0; for (int i = 0; i < s.size(); i ++) { sum += s[i] - '0'; } int res = sum % 9; for (int i = 1; i <= s.size() - 1; i ++) { res = res * 2 % 9; } cout << res << endl; } return 0; } /* n位数: 挑m个数字有C(n, m)种方法,共有C(n, m) * m个数字, 对应n个数字重复C(n, m) * m / n遍,等于C(n - 1, m - 1) C(n - 1, 0) + C(n - 1, 1) + C(n - 1, 2) + ...... + C(n - 1, n - 1) = 2 ^ (n - 1) */