cf-213-div1-A. Matrix

2014-11-24 02:34:47 · 作者: · 浏览: 1
当时比赛的时候弱爆了,当时只往求数组和上想了,没有想到这个问题的本质。
做法:
题目相当于就是取两节子字符串,然后把这两节子字符串的和相乘等于a。
ns[i]: 子字符串的和等于i的子字符串的个数。
#include  
#include  
#include  
using namespace std;  
#define ll __int64  
ll num[4040];  
ll add[4040];  
ll ns[40400];  
int main()  
{  
    ll a;  
    char str[4040];  
    ll i,j;  
    while(~scanf("%I64d",&a))  
    {  
        ll sum;  
        sum=0;  
        memset(ns,0,sizeof(ns));  
        scanf("%s",str);  
        ll len=strlen(str);  
        for(i=0;i
40000)continue; if(a%i==0) { sum+=ns[i]*ns[a/i]; } } } cout<