题目链接:https://vjudge.net/problem/HDU-6672
题目:
思路:这种题一看数据量那么大,而且是求公式,首先先打100个数据出来看看规律即可,以下代码注释的部分是我一开始打表观察数据的,应该很容易找到当是6的倍数时,
结果是它的一半,然后就很容易想到当模6余几的情况,继续找规律即可,我打出的100个数据如下:
AC代码如下:
// // Created by HJYL on 2019/8/17. // #include <iostream> #include <vector> #include <map> #include <string> #include <queue> #include <stack> #include <set> #include <algorithm> #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include<math.h> using namespace std; typedef long long ll; const int maxn=1e6+10; //ll a[maxn]; //void get() //{ // a[1]=1; // for(int i=2;i<=100;i++) // { // ll sum=0; // for(int j=1;j<i;j++) // { // sum+=(j*a[j]); // } // a[i]=sum%i; // } //} int main() { //freopen("C:\\Users\\asus567767\\CLionProjects\\untitled\\text","r",stdin); // get(); // for(int i=1;i<=100;i++) // cout<<a[i]<<" "; int T; scanf("%d",&T); while(T--){ long long n; scanf("%lld",&n); if(n%6==0) printf("%lld\n",n/2); if(n%6==1) printf("%lld\n",n-n/3); if(n%6==2) printf("%lld\n",n/2); if(n%6==3) printf("%lld\n",n/6); if(n%6==4) printf("%lld\n",n-1); if(n%6==5) printf("%lld\n",n/6); } return 0; }
百度之星初赛一 B Seq HDU - 6672 (大表找规律)
原文:https://www.cnblogs.com/Vampire6/p/11371083.html