#include<iostream> #include<cmath> using namespace std; long long int f[1001] = {0}; long long int do_calc(int n) {     if (n == 0)         {         f[0] = 1;         return f[0];     }     else if (n == 1)      {         f[1] = 1;         return f[1];     }     else     {         if (f[n] != 0)         {             f[n] %= (long long int)pow(10,9)+3;             return f[n];         }         int item = (long long int)(log(n) / log(2)) + 1;            for (int k = 0; k < item; k++)         {             f[n] += do_calc(n - (1 << k));         }         f[n] %= (long long int)pow(10,9)+3;            return f[n];     } } int main() {     int M;     cin >> M;     while (M > 0)     {         int n;         cin >> n;         cout << do_calc(n) << endl;         M--;     }     return 0; }
点赞 评论

相关推荐

10-22 19:44
门头沟学院 Java
面了100年面试不知...:那我得去剪个头
点赞 评论 收藏
分享
10-13 16:58
门头沟学院 Java
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务