#269(div2) C. MUH and House of Cards

题意:给出N,问可以组装成不同的层。

思路:发现第一层的mod3=2,第二层的mod3=1,第三层的mod3=0,第四层的mod3=2......然后我们判断N是否足够建立该层最少的所需,第i层所需=3*n*(n-1)/2+2*n,for循环里的i也要开longlong ,不然超时,别问我为什么知道。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 
 5 int main(){
 6     ll n;
 7     cin>>n;
 8     ll sum=0;
 9     int m=n%3;
10     ll y;
11     if(m==1) y=2;
12     else if(m==2) y=1;
13     else if(m==0) y=3;
14     for(ll i=y;;i+=3){
15         ll x=(i*(i-1)/2)*3+2*i;
16         if(x>n) break;
17         else sum++;
18     }
19     cout<<sum<<endl;
20 }

原文地址:https://www.cnblogs.com/hhxj/p/6974135.html