lightoj 1014 Ifter Party
链接:http://www.lightoj.com/volume_showproblem.php?problem=1014
题意:给你两个数 p, l,求 cha(cha = p-l)的约数,当约数大于 l 时,按从小到大输出
思路:想不出什么好解法,直接暴搞,从 1—> sqrt(ca*1.0); 然后按大小输出,最近刚学了stl,就用vector写了一个
1 #include<iostream> 2 #include<cstring> 3 #include<algorithm> 4 #include<cmath> 5 #include<cstdio> 6 #include<vector> 7 8 using namespace std; 9 10 typedef long long LL; 11 12 void num_vector(int j) //用到容器vector 13 { 14 int p, l, ca; 15 vector<int> a; //创建a数组 16 scanf("%d%d", &p, &l); 17 ca = p - l; 18 for(LL i = 1; i*i <= ca; ++i) 19 if(!(ca % i)) 20 { 21 if(i > l) a.push_back(i); //i>l时把i加入数组 22 if(ca/i > l && !(i*i == ca)) a.push_back(ca/i);// ca/i > l时把 ca/i 加入数组 23 } 24 sort(a.begin(), a.end()); //排序 25 printf("Case %d: ", j); 26 if(a.empty()) printf("impossible\n"); //没有数时 27 else { 28 int k = a.size(); //数组大小 29 for(int i = 0; i < k-1; ++i) printf("%d ", a[i]); 30 printf("%d\n", a[k-1]); 31 } 32 33 } 34 35 int main() 36 { 37 int t, i = 1; 38 //freopen("lightoj1014.txt", "r", stdin); 39 scanf("%d", &t); 40 while(t--) num_vector(i++); 41 return 0; 42 }