美团第一题 c++做法
发布于 2017-09-14 21:30 2355 次浏览 0 赞 最后一次编辑是 2017-09-14 21:32 来自 试题交流  

#include <iostream>

#include <cstring>

#include <vector>

using namespace std;

const int N = 100000 + 1000;

int a[N];

int bit[20][20][20];

int main(){

int n;

//cout << 1996000 % 7 << " " << 127 % 7 << endl;

while(cin >> n){

memset(bit,0,sizeof(bit));

for(int i = 0; i < n; i++)cin>>a[i];

long long ans = 0;

for(int i = 0; i < n; i++){

long long tmp = 1;

long long tt = 1LL * tmp * a[i];

int t1 = a[i]; int c = 0;

while(t1){

t1 /= 10;

c++;

}

//cout << "t1:" << ans <<endl;

for(int j = 0; j < 10; j++)

ans += bit[j][c][(7 - tt % 7) % 7];

for(int j = 0; j < 10; j++){

tt = a[i] * tmp;

ans += bit[j][0][(7 - tt % 7) % 7];

tmp *= 10;

}

tmp = 1;

for(int j = 0; j < 10; j++){

tt = a[i] * tmp;

//ans += bit[j][0][(7 - tt % 7) % 7];

bit[c][j][tt % 7]++;

tmp *= 10;

}

//cout << "t2:" << ans << " " << bit[3][0][1] <<endl;

}

cout << ans << endl;

}

return 0;


2 条回复

讲一下思路哈

2017-09-14 21:46

你这通过率是多少啊

2017-09-14 22:59
添加回复
回到顶部