谁能告诉我爱奇艺奶牛那题我的问题在哪。。。。。

不知道为什么一直是通过60%。。。。。。
int main()
{
	int n;
	while (cin >> n)
	{
		int buff;
		vector<int> no;
		for (int i = 0; i < n; i++)
		{
			cin >> buff;
			no.push_back(buff);
		}

		sort(no.begin(), no.end(), less<int>());

		long long count = 1;
		for (int i = 0; i < n; i++)
			count = count * (no[i] - i);

		count = count % 1000000007;

		cout << count << endl;
	}

	return 0;
}

全部评论
我在里面取模的也是50%啊。。。
点赞 回复 分享
发布于 2017-09-10 21:19
for(inti = 0; i < n; i++)    count = (count * (no[i] - i)) % 1000000007; cout << count << endl;
点赞 回复 分享
发布于 2017-09-10 21:09
每次都要mod一下,否则可能溢出
点赞 回复 分享
发布于 2017-09-10 21:07
我也是在里面mod的 通过率50%呀。。
点赞 回复 分享
发布于 2017-09-10 21:40
同最后模的。。。哭死
点赞 回复 分享
发布于 2017-09-10 21:16
import java.util.Arrays; import java.util.Scanner; /** * 奶牛编号 * @author WangYixin * */ public class Main2 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); while(sc.hasNext()){ int n = sc.nextInt(); //假设arr非降序,否则需要对齐排序 int[] arr = new int[n]; for(int i= 0;i<n;i++){ arr[i] = sc.nextInt(); } //!!!!新增加排序 Arrays.sort(arr); long[] f = new long[n]; f[0] = arr[0]; for(int i=1;i<n;i++){ //不影响前面+影响前面 long front = (arr[i]-arr[i-1])*f[i-1] % 1000000007; long after = f[i-1]*(arr[i-1]- i) ; f[i] = (front + after)% 1000000007; } System.out.println(f[n-1]); } } }
点赞 回复 分享
发布于 2017-09-10 21:09
我也最后才Mod,60%。。。。
点赞 回复 分享
发布于 2017-09-10 21:09
你这个应该每次算完就mod,而不是最后mod,因为数很大,long long 是存不下的
点赞 回复 分享
发布于 2017-09-10 21:09
懂了,谢谢各位。。。。
点赞 回复 分享
发布于 2017-09-10 21:09
在每次乘完后都要取个余,要不过程中就可能超范围
点赞 回复 分享
发布于 2017-09-10 21:08
你过了多少?
点赞 回复 分享
发布于 2017-09-10 21:07
每一步都要判断是否过大吧
点赞 回复 分享
发布于 2017-09-10 21:07

相关推荐

2025-11-24 14:22
安徽师范大学 财务
勇敢求职牛牛:然后简历的话,我个人意见(双非本有零星的垃圾offer),学校经历太多了,写了也应该往财务方面靠,然后技能方面多写一点吧,比如ERP的水平,对某些行业的流程(制造业),对数据的逻辑和敏感之类的
点赞 评论 收藏
分享
牛至超人:哈工大已经很棒了,不需要加括号了,然后咋没有实习经历呢?火速趁寒假整一段实习,导师不让就狠狠肘击
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务