枚举a,b,d,然后根据a,b,d的值算出来C。
#include<string.h>
#include<algorithm>
#include<stdlib.h>
#include<iostream>
#include<stdio.h>
#include<vector>
#define INF 1000000
#define LL __int64
using namespace std;
vector<int>vec;
int maps[201][201];
LL ans;
int n,m,s;
int qiu(int a,int b,int d)
{int c;int ss;ss=s;int ds;if(d>=b){if(ss%d==0&&(ss/d)>=a){return ss/d;}else{ss=ss-a*b;if(d-b&&ss%(d-b)==0){c=ss/(d-b);if(c<=a)return ss/(d-b);}}}else{ss=ss-a*b+a*d;if(ss%d==0){return ss/d;}}return 0;
}
void dos(int a,int b,int c,int d)
{int aa;int bb;aa=max(a,c);bb=max(b,d);ans+=(n-aa+1)*(m-bb+1);
}
void ffdos(int a,int b)
{ans+=(n-a+1)*(m-b+1);
}
void fdos(int a,int b)
{ans+=(((a+1)/2)*((b+1)/2))*(n-a+1)*(m-b+1);
}
int main()
{int i,j,k;while(~scanf("%d%d%d",&n,&m,&s)){ans=0;for(i=1;i<=n;i+=2){for(j=1;j<=m;j+=2){if(i*j>s)break;if(i*j==s){fdos(i,j);continue;}for(k=1;k<=m;k+=2){int ss;ss=qiu(i,j,k);if(!ss)continue;if(ss>n||ss%2==0)continue;if(ss>=i&&k>=j){ffdos(ss,k);}else dos(i,j,ss,k);}}}cout<<ans<<endl;}return 0;
}