HDU3054 http://acm.hdu.edu.cn/showproblem.php?pid=3054
类似数据量很大 没思路的题目可以先打表找规律
先通过打表输出找到规律,然后根据规律解题
运行完打表代码之后会发现1,3,4,5,6,7,……都是到第9个数增量是有一个变化!而2是到第4个数增量有了变化!
打表代码:
#include <iostream>
using namespace std;
int pp(int n)
{
int ans=1;
for(int i=0;i<n;i++)
ans*=10;
return ans;
}
int f[100000000]={0};
int main()
{
int n;
while(cin>>n)
{
int p0=pp(n),p1=pp(n+1),t=1;
f[1]=1;
for(int i=2;i<100000000;i++)
{
f[i]=(f[i-1]+f[i-2])%p1;
if(f[i]%p0==0&&f[i]!=0)
{
cout<<i<<"th feibo "<<t++<<"th number"<<endl;
}
if(t==50)break;
}
}
return 0;
}
解题代码:
#include <iostream>
#include <cmath>
#include <cstdio>
#include <algorithm>
#include <cstring>
#define ll long long
using namespace std;
const int maxn=1e9;
int fang(int j)
{
int s=1;
for(int i=0;i<j;i++)
s=s*10;
return s;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int a,b,sum;
scanf("%d%d",&a,&b);
if(a==1)
{
sum=15*(b+(b-1)/9);
cout<<sum<<endl;
}
else if(a==2)
{
sum=150*(b+(b-1)/4);
cout<<sum<<endl;
}
else
{
sum=75*fang(a-2)*(b+(b-1)/9);
cout<<sum<<endl;
}
}
return 0;
}