Codeforses 185 A Plant 思维 规律
生活随笔
收集整理的這篇文章主要介紹了
Codeforses 185 A Plant 思维 规律
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目鏈接:?http://codeforces.com/problemset/problem/185/A
題目描述: 給你一個(gè)三角形,每次在上三角形中畫一個(gè)下三角形, 在下三角形中畫一個(gè)上三角形, 求最終的上三角形總數(shù)是多少
解題思路: 用矩陣快速冪很好求, 矩陣也很好構(gòu)造, 這里就不寫了, 由于每一層中的上三角形都比上一層多一個(gè), 所以我們只要求出來最下一層再用等差公式就可以了, 第一個(gè)最下一層的三角形是1, 然后是2, 4, 8......所以答案就是(1+2^n)*2^n/2
代碼:?
#include <iostream> #include <cstdio> #include <string> #include <vector> #include <cstring> #include <iterator> #include <cmath> #include <algorithm> #include <stack> #include <deque> #include <map> #define lson l, m, rt<<1 #define rson m+1, r, rt<<1|1 #define mem0(a) memset(a,0,sizeof(a)) #define meminf(a) memset(a,-0x3f,sizeof(a)) #define fi(n) for(i=0;i<n;i++) #define fj(m) for(j=0;j<m;j++) #define sca(x) scanf("%d",&x) #define ssca(x) scanf("%s",x) #define scalld(x) scanf("%I64d",&x) #define print(x) printf("%d\n", x) #define printlld(x) printf("%I64d\n",x) #define de printf("=======\n") #define yes printf("YES\n") #define no printf("NO\n") typedef long long ll; using namespace std;const int mod = 1e9+7;ll q_power( ll num, ll n ) {ll ret = 1;while( n ) {if( n & 1 ) ret = ret * num % mod;n >>= 1;num = num * num % mod;//num *= num % mod; // 兩者有什么區(qū)別? }return ret; }int main() {ll n;while( cin >> n ) {if( n == 0 ) {cout << "1" << endl;continue;}ll temp = q_power(2, n);cout << (1+temp)*temp/2%mod << endl;}return 0; } View Code思考: 遇到一個(gè)小坑坑, num *= num % mod 與 num = num * num % mod 是不一樣的, WA了兩次, 真的蠢, 以后注意, 最近思想上有點(diǎn)兒波動(dòng), 自我調(diào)整一下
轉(zhuǎn)載于:https://www.cnblogs.com/FriskyPuppy/p/7427885.html
總結(jié)
以上是生活随笔為你收集整理的Codeforses 185 A Plant 思维 规律的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入理解JVM内存区域与内存分配
- 下一篇: java web轻量级开发面试教程内容精